如何获取std::regex的所有可能匹配

bluesky1年前 ⋅ 200 阅读

ChatGPT的回答仅作参考:

要获取std::regex的所有可能匹配,可以使用std::sregex_iterator类来迭代匹配结果。以下是一个示例代码:

```cpp
#include <iostream>
#include <regex>

int main() {
    std::string text = "Hello, my name is John. I live in New York.";
    std::regex pattern("\\b\\w+\\b"); // 匹配单词

    std::sregex_iterator it(text.begin(), text.end(), pattern);
    std::sregex_iterator end;

    while (it != end) {
        std::smatch match = *it;
        std::cout << match.str() << std::endl;
        ++it;
    }

    return 0;
}
```

在上面的示例中,我们使用std::sregex_iterator来迭代匹配结果。它接受三个参数:待匹配的字符串的起始迭代器、结束迭代器和正则表达式模式。在每次迭代中,我们可以通过解引用迭代器来获取匹配结果,并使用std::smatch类来访问匹配的子字符串。

输出结果将是所有匹配到的单词:

```
Hello
my
name
is
John
I
live
in
New
York
```

注意,上述示例中的正则表达式模式是匹配单词的简单示例。您可以根据自己的需求修改正则表达式模式来匹配不同的内容。

全部评论: 0

    相关推荐