gpt4 book ai didi

C++。如何使用 sregex_token_iterator 检测匹配和不匹配的部分?

转载 作者:行者123 更新时间:2023-11-28 05:50:47 25 4
gpt4 key购买 nike

这个简单的代码溢出了字符串,并在 callback 函数中按顺序接收标记。

请注意,迭代器构造函数的参数列表中的 {-1,0} 是一个列表,指定了我们要迭代的子匹配项。 -1 用于非匹配部分,0 用于第一个子匹配。

auto callback = [&](std::string const& m) {
std::cout << "m = " << m << std::endl;
};

std::string input_text = "my\n\t values are 9, 19";
std::regex re("are[ \\n\\t]+");
std::sregex_token_iterator
begin(input_text.begin(), input_text.end(), re, { -1, 0 }),
end;
std::for_each(begin, end, callback);

正则表达式可以是任何东西。

sregex_token_iterator 文档和示例 available here .您也可以在 ideone.com 上运行此代码

我怎么知道我在处理什么情况:匹配还是不匹配?

最佳答案

也许不是很好,但很有效:

std::string input_text = "my\n\t values are 9, 19";
std::regex re("are[ \\n\\t]+");

auto callback = [&](std::string const& m) {
if (std::regex_match(m, re)) {
/* matching */
}
else {
/* non-matching */
}
};

std::sregex_token_iterator
begin(input_text.begin(), input_text.end(), re, { -1, 0 }),
end;
std::for_each(begin, end, callback);

关于C++。如何使用 sregex_token_iterator 检测匹配和不匹配的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294100/

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