将 C++11 正则表达式与 gcc 4.8.2 一起使用时出现奇怪的结果(但适用于 Boost 正则表达式)[重复]

StackOverflow https://stackoverflow.com//questions/20027305

我尝试使用 C++11 的正则表达式,但即使在简单的示例中也失败了。从表面上看,它似乎只是比较字符串,例如:

std::regex_match(std::string{""}, std::regex{"a?"})   // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true  (???)

相反,Boost 的正则表达式库的行为正如我所期望的:

boost::regex_match(std::string{""}, boost::regex{"a?"})   // true  (OK)
boost::regex_match(std::string{"a?"}, boost::regex{"a?"}) // false (OK)

我使用 GCC 4.8.2 和 clang 3.4 进行了测试(也使用 GCC 的 STL 库)。要么该库已损坏,要么我不理解 C++11 标准定义的语法。

有帮助吗?

解决方案

GCC 4.8.x 不支持它。查看相应的 Bugzilla 条目:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631

具体来说:“现在正则表达式已实现。应该随 GCC 4.9 一起提供:)”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top