2013-02-25 98 views
11

我试图一个相当简单的正则表达式匹配在C++ 11(使用gcc 4.7.2),但我具有大量的麻烦。试图建立基于C++ 11正则表达式匹配

std::regex unquoted(R"regex(\s*([^",]+)\s*)regex"); 

模式导致构造函数抛出一个异常std::regex_error与代码std::regex_constants::error_escape。几个正则表达式测试人员在线使用同样的表达式没有问题,并且我尝试过使用不同的一些不同的语法选项无济于事。 C++ regex语法有没有根本不同的地方,我不能理解?

+0

你没有逃过中间的报价 – 2013-02-25 02:23:31

+10

[是的,我确实](http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals) – 2013-02-25 02:25:24

+8

海湾合作委员会的正则表达式已损坏/未执行。 – Xeo 2013-02-25 02:33:46

回答

17

gcc's stdc++11 implementation status page - 正则表达式不支持作为GCC 4.8

编辑留给后人的:由于在评论中提到的,正则表达式库现在是libstdc++并且应该在GCC 4.9和。

+0

我试着用铿锵建设,并得到同样的结果 - 是因为不管我使用的编译器,我的系统使用的是相同的C++标准库 – 2013-02-25 14:27:23

+3

根据http://libcxx.llvm.org? /,clang自己的C++标准库应该支持regex,但是只能在OSX上默认使用。在其他平台上,clang默认使用'native'C++标准库。 – 2013-02-25 18:33:38

+0

'boost :: regex'就是这样。帮帮我! – 2013-02-25 22:09:03