regex(“(abc | aa。* | bb。*)”)vs regex(“(aa。* | bb。* | cc。*)”);

时间:2014-05-30 00:21:54

标签: c++ regex c++11

在c ++ 11中使用正则表达式时遇到了一个奇怪的问题(ubuntu 14.4,gcc 4.8.2)

#include <iostream>
#include <regex>
using namespace std;
int main()
{
    regex r("(abc|aa.*|bb.*)");
    cout<<regex_match("bb11",r)<<endl;  //return false
    cout<<regex_match("aa11",r)<<endl;  //return true
    cout<<regex_match("abc",r)<<endl;   //return true
    return 0;
}

,而

int main()
{
    regex r("(aa.*|bb.*|cc.*)");
    cout<<regex_match("bb11",r)<<endl;  //return true
    cout<<regex_match("aa11",r)<<endl;  //return true
    cout<<regex_match("abc",r)<<endl;   //return false
    return 0;
}

我想知道为什么“bb11”有不同的结果?

1 个答案:

答案 0 :(得分:4)

std::regex is not supported in GCC until 4.9

在4.8.2中你会得到各种奇怪的行为。