Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正则表达式stl不工作_C++_Regex_C++11 - Fatal编程技术网

C++ 正则表达式stl不工作

C++ 正则表达式stl不工作,c++,regex,c++11,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]+)[ \

我试图验证字符串是否与具有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]*\)$)#");
顺便说一句,我相信以下regexp与您的相同,但更简单:

regex rgx(R"#(^\(\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$)#");
或没有原始文字:

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

哪个编译器?这绝对不是STL的一部分。或者,如果编译器不支持原始文本,请将每个反斜杠更改为两个反斜杠。现在我有了正则表达式rgx(“#(^\(\\s*([-]?\\d+\\s*,\\s*([-]?\\d+\\s*)$)\”;但仍然不是working@user2898190-新的正则表达式仍然有一个单独的反斜杠。但在你继续这可能是徒劳的努力之前,如果你使用gcc,你就注定要失败。regex支持的只是无用的存根。如果你没有原始文本,你应该从开头和结尾删除散列(#),所以它应该是这样的:
regex rgx(“^\(\\s*([-]?\\d+)\\s*,\\s*([-]?\\d+\\s*)$”
@PeteBecker最近发布的libstdc++版本现在有了