gpt4 book ai didi

C++ 从 regex_iterator 获取匹配项

转载 作者:行者123 更新时间:2023-11-30 02:55:00 28 4
gpt4 key购买 nike

我试图通过逐行读取文件来从文件中获取一些匹配项。我的代码是这样的:

std::regex e("id=\"(.+?)\"|title=\"(.+?)\"|summary=\"(.+?)\"|first=\"(.+?)\"|last=\"(.+?)\"");
std::regex_iterator<std::string::iterator> rit ( line.begin(), line.end(), e );
std::regex_iterator<std::string::iterator> rend;

while (rit!=rend) {
std::cout << rit->str() << std::endl;
++rit;
}

我尝试过使用 regex_search 和 smatch 对象,但它在该行的第一个匹配项处停止。我发现 regex_iterator 完成了这项工作,但它给了我整个匹配项(例如 id="123456",而不是 123456),这是有道理的,但我只需要数字。

根据 http://www.cplusplus.com/reference/regex/regex_iterator/operator */取消引用迭代器会给我一个 match_results 对象,但我不知道如何声明一个(它总是给我错误的参数列表。我怎样才能让迭代器给我一个 smatch 对象?

最佳答案

match_results 对象上调用 str() 会返回整个当前匹配项。要查看单个子匹配项,请在调用中传递一个索引:

for (int i = 0; i < rit->size(); ++i)
std::cout << rit->str(i) << '\n';

关于C++ 从 regex_iterator 获取匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com