无法使用regex_search匹配子字符串

时间:2015-05-07 19:04:43

标签: c++ regex stl

为什么会失败?我试图在C ++ STL中使用正则表达式匹配子字符串。 我在这里做错了什么?

GCC版本::(Linaro GCC 4.8-2014.04)4.8.3

#include<regex>
using namespace std;
int main()
{
        regex e("auth");
        smatch m;
        string s="Connected to a:b:c:d completed auth id=3, str=3";
        //string s="auth";

        bool match = regex_search(s,e);
        if( match == true )
                printf("matched");
        else
                printf("no match");
}

1 个答案:

答案 0 :(得分:0)

根据文档std::regex_match仅匹配整个字符串。您可能需要std::regex_search

#include<regex>
using namespace std;
int main()
{
        regex e("auth");
        smatch m;
        string s="Connected to a:b:c:d completed auth id=3, str=3";
        //string s="auth";

        bool match = regex_search(s,e);
        if( match == true )
                printf("matched");
        else
                printf("no match");
}

另外,您应该检查您的实施是否支持std::regex这是C++11中的新功能。例如,GCC编译器仅在版本<regex>及更高版本中正确实现4.9.0