我正在尝试验证一个字符串是否对应于一个带有 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/