为了账号安全,请及时绑定邮箱和手机立即绑定

关于正则表达式的gcc 4.8或更早的bug吗?

关于正则表达式的gcc 4.8或更早的bug吗?

C C++
鸿蒙传说 2019-05-27 12:54:13
关于正则表达式的gcc 4.8或更早的bug吗?我试图在C ++ 11代码中使用std :: regex,但看起来支持有点儿错误。一个例子:#include <regex>#include <iostream>int main (int argc, const char * argv[]) {     std::regex r("st|mt|tr");     std::cerr << "st|mt|tr" << " matches st? " << std::regex_match("st", r) << std::endl;     std::cerr << "st|mt|tr" << " matches mt? " << std::regex_match("mt", r) << std::endl;     std::cerr << "st|mt|tr" << " matches tr? " << std::regex_match("tr", r) << std::endl;}输出:st|mt|tr matches st? 1st|mt|tr matches mt? 1st|mt|tr matches tr? 0当使用gcc(MacPorts gcc47 4.7.1_2)4.7.1编译时,使用g++ *.cc -o test -std=c++11g++ *.cc -o test -std=c++0x要么g++ *.cc -o test -std=gnu++0x此外,如果我只有两种替代模式st|mt,那么正则表达式效果很好,例如,看起来最后一种模式由于某些原因而不匹配。该代码适用于Apple LLVM编译器。有关如何解决问题的任何想法?更新一个可能的解决方案是使用组来实现多个替代方案,例如(st|mt)|tr。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 2595 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信