使用 std::regex 匹配多个结果
使用正则表达式匹配字符串中多次出现的单词可能具有挑战性。尽管表达式“(bS*b){0,}”似乎匹配字符串中的所有连续单词,但它可能不会产生所需的输出。相反,建议采用迭代方法。
以下是修改后的代码:
#include <iostream> #include <string> #include <regex> int main() { regex exp("(\b\S*\b)"); smatch res; string str = "first second third forth"; string::const_iterator searchStart(str.cbegin()); while (regex_search(searchStart, str.cend(), res, exp)) { cout << (searchStart == str.cbegin() ? "" : " ") << res[0]; searchStart = res.suffix().first; } cout << endl; return 0; }
在此更新的代码中,我们在执行正则表达式搜索时使用 while 循环来迭代字符串。循环首先将 searchStart 迭代器设置为字符串的开头。然后,在每次迭代中:
通过迭代字符串直到找不到更多匹配项,我们可以一一输出所有单词。
以上是如何使用 C 的 `std::regex` 高效匹配字符串中的多个单词?的详细内容。更多信息请关注PHP中文网其他相关文章!