std::regex_search只能匹配一个模式串吗
时间: 2023-07-16 07:17:27 浏览: 89
C++ 提供了 <regex> 头文件,其中包含了正则表达式的相关类和函数
不是的,std::regex_search可以匹配多个模式串。它的第三个参数是一个std::match_results对象的引用,可以存储所有匹配到的结果,包括每个匹配的子串、每个子串的位置等信息。你可以通过循环遍历这个std::match_results对象,来获取所有匹配到的结果。以下是一个示例代码:
```cpp
#include <iostream>
#include <regex>
int main()
{
std::string s = "Hello, world! This is a test string.";
std::regex pattern("\\w+");
std::smatch matches;
while (std::regex_search(s, matches, pattern)) {
for (auto match : matches) {
std::cout << match.str() << " ";
}
std::cout << std::endl;
s = matches.suffix().str();
}
return 0;
}
```
输出结果:
```
Hello world
This is a test string
```
可以看到,通过循环遍历std::match_results对象,我们获取了所有匹配到的单词。
阅读全文