增强特殊字符的正则表达式模式
boost regex pattern for special characters
谁知道如何在c++中为特殊字符制作boost模式?
这意味着不仅("[A-Za-z0-9 \s]*")
还有_ + - ) \ ( . | ]
等等例如像这样的字符串:
"hello world \has (special.characters) + defined_with[boost]"
是有效的
,
"!hello world \has (special.characters) + defined_with[boost]"
无效
,像这样:
string input;
getline(cin,input);
boost::regex pattern1 ("[a-zA-Z0-9 \s \_ \+ \- \ \) \\ \( \. \| ]*");
if (!regex_match (input, pattern1))
{
cout << "invalid input" << endl;
}
else
cout << input << " - is valid" << endl;
我将非常感谢您提供的任何帮助
我建议做一个集合,排除不会像那样传递的字符例如:
[^\!\?]+
,然后测试是否匹配
我没有使用Boost:regex到目前为止,但我知道一点关于regex。我假设您只希望在至少存在一个"特殊字符"的情况下进行匹配。此外,我假设您只希望字母数字字母有效,其余字母无效。比如"Good String"answers"Bad.String "。请尽量说得更具体一点。
首先,据我所知,只匹配一个具有零个或多个"*"的类将始终返回true。尝试"+"来代替匹配,只有当你至少有一个类的实例。
第二,你可以尝试使用像[^a- za - z0 -9]这样的类,如果有任何不在你的类中的东西,它的结果是true。
对于进一步的阅读,我建议文档(是的,我知道,regex语法是相当地狱):http://www.boost.org/doc/libs/1_53_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html或者是我最喜欢的regex语法http://en.wikipedia.org/wiki/Regular_expression
我希望这对你有帮助!
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 编写正则表达式模式 c++
- 标准库中的任何正则表达式语法是否支持 (?(定义)用于子模式参考?
- 有没有办法在C++正则表达式中重用模式的一部分?
- 正则表达式 - 匹配不遵循特定模式的字符
- C++ 中用于搜索字符串模式的正则表达式
- 解析 HTTP 的摘要式身份验证的正确正则表达式模式是什么?
- 正则表达式:从模式字符串 1.string2'string3 中提取字符串,其中字符串 1 可以包含 '." 字符
- 正则表达式匹配是否保证始终只关注最后一个模式?C++
- 如何在 QT 框架工作C++中使用变量作为正则表达式模式
- 正则表达式用模式替换模式
- 如何将正则表达式模式存储为正则表达式对象或字符串
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 发布模式下的正则表达式提升库链接在使用 mingw-w64 工具链时警告"duplicate section has different size"
- 正则表达式模式以匹配 switch 语句C++
- 重复特定的正则表达式模式
- C++正则表达式匹配和模式捕获
- C++ 中的多行正则表达式模式
- c++正则表达式/flex++中的模式{sp}是什么意思
- 在字符串正则表达式c++中查找模式