这个程序编译没有任何错误,但是当我运行该程序时,它意外退出,说它遇到了一些问题。
使用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;
}
答案 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