C++ RegExp字符串筛选-如何允许“-`符号?
所以有这样的代码来过滤字母,并且:=如何允许C++ RegExp字符串筛选-如何允许“-`符号?,c++,regex,boost,C++,Regex,Boost,所以有这样的代码来过滤字母,并且:=如何允许- #include <boost/regex.hpp> #include <boost/algorithm/string/regex.hpp> std::string filter_args(std::string args) { std::cout << boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\"/.: ]+"));
-
#include <boost/regex.hpp>
#include <boost/algorithm/string/regex.hpp>
std::string filter_args(std::string args)
{
std::cout << boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\"/.: ]+"));
return boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\"/.: ]+"));
}
#包括
#包括
std::string filter_args(std::string args)
{
std::cout可以用\
来转义它。这应该可以用。\-
实际上,你必须做两次。\-
一次来转义\
,第二次来转义-
用\
转义。这应该行得通。\-
实际上,你必须做两次。\-
一次跳出\
,第二次跳出-
把它放在最后一个括号里,比如[^a-zA-Z0-9=\\”/。:-]
把它放在最后一个括号里,比如[^a-zA-Z0-9=\/。,然后说:
可以通过封闭字符列表来指定字符类
在[]
中,将匹配列表中的任何字符。如果
“[”是“^”之后的字符,该类匹配任何不在
列表。在列表中,“-”字符指定一个范围,以便
a-z
表示“a”和“z”之间的所有字符,包括在内。如果
要使“-”或“]”本身成为类的成员,请将其置于
列表的开头(可能在“^”之后),或使用
反斜杠。“-”也可以按字面意思理解,当它位于
列表,就在结束“].”之前(以下都指定了相同的
由三个字符组成的类别:[-az]
、[az-]
和[a \-z]
。所有字符都是
与[a-z]
不同,后者指定一个包含26个元素的类
字符,甚至在基于EBCDIC的字符集上。)此外,如果您尝试
使用字符类\w
,\w
,\s
,\s
,\d
或\d
作为端点
在一个范围内,“-”是字面上理解的
因此:
或
(注意双反斜杠;一个用于转义字符串文字,第二个用于转义正则表达式)
我推荐前者
始终将文档作为您的第一个呼叫端口进行查看!,并说:
可以通过封闭字符列表来指定字符类
在[]
中,将匹配列表中的任何字符。如果
“[”是“^”之后的字符,该类匹配任何不在
列表。在列表中,“-”字符指定一个范围,以便
a-z
表示“a”和“z”之间的所有字符,包括在内。如果
要使“-”或“]”本身成为类的成员,请将其置于
列表的开头(可能在“^”之后),或使用
反斜杠。“-”也可以按字面意思理解,当它位于
列表,就在结束“].”之前(以下都指定了相同的
由三个字符组成的类别:[-az]
、[az-]
和[a \-z]
。所有字符都是
与[a-z]
不同,后者指定一个包含26个元素的类
字符,甚至在基于EBCDIC的字符集上。)此外,如果您尝试
使用字符类\w
,\w
,\s
,\s
,\d
或\d
作为端点
在一个范围内,“-”是字面上理解的
因此:
或
(注意双反斜杠;一个用于转义字符串文字,第二个用于转义正则表达式)
我推荐前者
始终在第一个调用端口时查看文档!由于boost::exception\u detail::clone\u impl位于内存位置0x003ef0a4而失败。
如果您将其放置在正确的位置,则根本不需要对其进行转义。由于boost::exception\u detail::clone\u impl位于内存位置0x003ef0a4而失败。
您不需要在只要你把它放在正确的地方。@Kabumbus:因为你要求包含那个字符。为什么你认为不应该这样做?因为通常-意味着一个范围,就像你在那里使用的a-z。@Kabumbus:因为你要求包含那个字符。为什么你认为不应该这样做?因为没有Rmaly-表示一个范围,如您在那里使用的a-z。
boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\"/.: -]+"))
boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\\-\"/.: ]+"))