使用 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 <p>在此更新的代码中,我们在执行正则表达式搜索时使用 while 循环来迭代字符串。循环首先将 searchStart 迭代器设置为字符串的开头。然后,在每次迭代中:</p> <ol> <li>regex_search 函数在从 searchStart 开始的子字符串中搜索该模式的第一次出现。</li> <li>如果找到匹配项,我们将打印匹配的单词.</li> <li>我们更新 searchStart 迭代器以在匹配后开始搜索word.</li> </ol> <p>通过迭代字符串直到找不到更多匹配项,我们可以一一输出所有单词。</p></regex></string></iostream>
以上是如何使用 C 的 `std::regex` 高效匹配字符串中的多个单词?的详细内容。更多信息请关注PHP中文网其他相关文章!