std::cmatch res;
std::string str = "<h2>I'm a piece of text</h2>";
std::regex rx("<h(.)>([^<]+)");
std::regex_search(str.c_str(), res, rx);
std::cout << res[1] << ". " << res[2] << "\n";
这段简单的代码应该有用吗?对? 显然它没有:
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
Aborted
编译器(gcc 4.7.0)错误或我错过了什么?
答案 0 :(得分:3)
正则表达式中的括号似乎导致了问题。有关详细信息和可能的解决方法,请参阅this SO thread。
另外(来自同一个帖子),gcc版本4.6.1只对std::regex
有部分支持,我不知道它是否已在版本4.7.0中得到修复