c++ - 正则表达式 STL 不工作

标签 c++ regex c++11

我正在尝试验证一个字符串是否对应于一个带有 STL 的正则表达式,如下所示:

regex rgx("#^\([ \r\t\n\f]*([-]?[0-9]+)[ \r\t\n\f]*,[ \r\t\n\f]*([-]?[0-9]+)[ \r\t\n\f]*\)$#");
bool test = regex_search("(12,3)", rgx);

字符串应该匹配,但在那之后 test = false !

最佳答案

您需要将您的文字包装成原始文字:

regex rgx(R"#(^\([ \r\t\n\f]*([-]?[0-9]+)[ \r\t\n\f]*,[ \r\t\n\f]*([-]?[0-9]+)[ \r\t\n\f]*\)$)#");

顺便说一句,我相信以下正则表达式与您的相同,但更简单:

regex rgx(R"#(^\(\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$)#");

或者没有原始文字:

regex rgx("^\\(\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$")

关于c++ - 正则表达式 STL 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468164/

相关文章:

regex - 带有约束的 Rails 自定义路由 - 路由要求中不允许使用正则表达式 anchor 字符

c++ - 我可以使用为某种类型指定的分配器在 C++ 中分配另一种类型的对象吗?

c++ - 需要帮助调试互斥锁死锁

c++ - 如何在 double 变量中划分两个整数?

c++ - 隐藏 sh : -c error messages when calling “system” in c++ Linux

mysql - 如何确定列表中的哪些正则表达式可能重叠

regex - 需要一个仅匹配管道字符的单个实例的正则表达式

c++ - 引用数据类型的可变参数模板

c++ - 值语义与具有大型数据结构的输出参数

c++ - 在标准中,什么是 "derived-declarator-type"?