无法运行使用regex c ++ 11 std在Windows中使用minGW编译的程序

时间:2015-06-30 14:09:31

标签: c++ regex c++11 mingw

这个程序编译没有任何错误,但是当我运行该程序时,它意外退出,说它遇到了一些问题。

使用gdb进行分析,程序会遇到分段错误。我不太了解gdb所以如果有人可以重现问题并解释有用的错误,就无法彻底检查。

我还能做些什么来纠正这个问题。

#include<iostream>
#include<regex>
#include<string>
using namespace std;

int main()
{
   bool found;
   cmatch m;
try
{
    found = regex_search("<html>blah blah blah </html>",m,regex("<.*>.* </\\1"));
    cout<< found<<endl<<m.str();
}
catch(exception & e)
{

    cout<<e.what();
}

return 0;


}

1 个答案:

答案 0 :(得分:1)

您的背部参考需要引用一个组。

#include<iostream>
#include<regex>
#include<string>
using namespace std;

int main()
{
    bool found;
    cmatch m;
    try
    {
        found = regex_search("<html>blah blah blah </html>",m,regex("<(.*)>(.*)</\\1>"));
        cout << "***whole match***\n";
        cout << "found=" << found << endl;
        cout << m.str() << endl;

        cout << "\n*** parts ***" << endl;
        for (const auto& c : m) {
            cout << c << endl;
        }

    }
    catch(exception & e)
    {

        cout<<e.what() << endl;
    }

    return 0;


}

预期产出:

***whole match***
found=1
<html>blah blah blah </html>

*** parts ***
<html>blah blah blah </html>
html
blah blah blah