gpt4 book ai didi

c++ - 如何在 C++ 中获取 std::string 的基本 preg_match_all 替换?

转载 作者:行者123 更新时间:2023-11-30 04:39:35 25 4
gpt4 key购买 nike

“基本”的意思是:只有运算符“+”(->以下..)和“|” (->or) 是必需的。

原型(prototype):

preg_match_all(std::string pattern, std::string subject, std::vector<std::string> &matches)

使用示例:

std::vector<std::string> matches;
std::string pattern, subject;
subject = "Some text with a lots of foo foo and " + char(255) + " again " + char(255);
pattern = "/" + char(255) + char(255) + "+|foo+/";
preg_match_all(pattern, subject, matches);

比赛之后应该可以通过 matches[n] 获得。有人没有使用boost 和/或 PCRE 得到提示?如果不是,我是如何通过 boost 实现这一目标的?

最佳答案

这将返回所有匹配项的 vector 以及找到它们的索引。

std::vector<std::pair<std::string, unsigned int>> RegexPP::MatchAll(std::string pattern, std::string haystack) {
std::vector<std::pair<std::string, unsigned int>> matches;

std::regex p(pattern);

std::sregex_iterator start(haystack.begin(), haystack.end(), p), end;

for(; start != end; start++) {
auto match = *start; // dereference the iterator to get the match_result
matches.push_back(std::pair<std::string, unsigned int>(match.str(), match.position()));
}

return matches;
}

关于c++ - 如何在 C++ 中获取 std::string 的基本 preg_match_all 替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177731/

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