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=\\-\"/.: ]+"))