将 C++11 正则表达式与 gcc 4.8.2 一起使用时出现奇怪的结果(但适用于 Boost 正则表达式)[重复]
题
我尝试使用 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 条目:
具体来说:“现在正则表达式已实现。应该随 GCC 4.9 一起提供:)”
不隶属于 StackOverflow