regex_search throw std :: regex_error

时间:2012-06-21 13:35:00

标签: c++ regex gcc c++11

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)错误或我错过了什么?

1 个答案:

答案 0 :(得分:3)

正则表达式中的括号似乎导致了问题。有关详细信息和可能的解决方法,请参阅this SO thread

另外(来自同一个帖子),gcc版本4.6.1只对std::regex有部分支持,我不知道它是否已在版本4.7.0中得到修复