我尝试为我的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(而不是提升)中实现这个设计?
我想要检索匹配
再次感谢。
答案 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是验证正则表达式的绝佳来源!