4
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)错误还是我遗漏了什么?

4

1 回答 1

3

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

另外(来自同一个线程),gcc 版本 4.6.1 仅部分支持std::regex,我不知道它是否已在 4.7.0 版本中修复

于 2012-06-21T13:53:55.920 回答