This question already has answers here:
Is gcc 4.8 or earlier buggy about regular expressions?
(3个答案)
已关闭6年。
我尝试使用C++ 11的正则表达式,但即使在琐碎的示例中也失败了。从外部看,似乎仅比较字符串,例如:
相反,Boost的regexp库的行为与我期望的一样:
我使用GCC 4.8.2和clang 3.4(也使用GCC的STL库)进行了测试。该库已损坏,或者我不了解C++ 11标准定义的语法。
(3个答案)
已关闭6年。
我尝试使用C++ 11的正则表达式,但即使在琐碎的示例中也失败了。从外部看,似乎仅比较字符串,例如:
std::regex_match(std::string{""}, std::regex{"a?"}) // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true (???)
相反,Boost的regexp库的行为与我期望的一样:
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不支持此功能。 checkout 相应的Bugzilla条目:
具体来说:“现在已实现正则表达式。应随GCC 4.9一起提供:)”
关于c++ - 将C++ 11正则表达式与gcc 4.8.2一起使用时,结果奇怪(但与Boost regex一起使用),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20027305/