需要c ++ Regex的帮助

时间:2014-02-04 01:52:27

标签: c++ regex

我尝试为我的gcc 4.8.1制作以下代码,但我不能。如果您需要更多信息,请告诉我。非常感谢你

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";

输出:

2. Egg prices
根据克里斯的说法,我需要等待gcc 4.9。如果是这样,你如何在当前的gcc(而不是提升)中实现这个设计? 我想要检索匹配

再次感谢。

2 个答案:

答案 0 :(得分:0)

根据错误消息,您必须使用其他库,例如Boost.Regex

如果要清理HTML,则应考虑使用更专业的技术。我个人通过jsoup来做到这一点。 Gumbo可能适用于C ++。 XML解析器通常也可以工作。

答案 1 :(得分:0)

我现在没有增强环境来测试(我会尽快做到),但如果你有,请尝试以下方法:

#include<boost/regex>
#include<iostream>
#include<string>

int main(){

try{
  std::string str("<h2>I'm a piece of text</h2>");

  boost::regex rx("(<h[1-9]>)(.*)(<\\/h[1-9]>)");
  boost::sregex_iterator it(str.begin(), str.end(), rx);

  std::cout << << (*it)[1] << "\n"; // get group 1

 return 0;
}

Regex 101是验证正则表达式的绝佳来源!