0

我现在使用 HTTP 库 (winhttp) 已经 2 周了,现在我想改进我的 RegExp 以在目标网站上检索一些数据。

给定以下 HTML 代码:

Total Posts:</span> 22,423</li>

现在我想做的是只检索数字并将其存储到一个变量中:

regex = "Total Posts:</span> \\S+"; 

if(std::regex_search(regexs, regexmatch, regex))
{
    temp = regexmatch[0];
    found = temp.find(",");
    if(found != std::string::npos)
        temp.erase(found, 1);
    temp.erase(0, 19);
    temp.erase(temp.end() - 5, temp.end());
    User._Posts = ConvertStringToInteger(temp);
}

为此使用了一些正则表达式并剥离了部分,因为我不明白我如何只检索模式,而不是整个结果。希望有人理解我。已经查阅了文档,但没有发现任何可以帮助我的东西。

4

1 回答 1

0

为了只匹配您想要的模式,您希望使用带有std::regex_search.

捕获组用于捕获正则表达式中的匹配区域,每个捕获的区域由sub_match. 您可以使用for 处理字符串子匹配的特smatch化,然后使用运算符来获取匹配。match_results[]

例子:

const std::string foo = "Total Posts:</span> 22,423</li>";

std::regex rgx("Total Posts:</span> ([^<]+)");
std::smatch match;

if (std::regex_search(foo.begin(), foo.end(), match, rgx)) {
    std::cout << match[1] << '\n';
}

输出:

22,423
于 2013-10-21T08:04:13.980 回答