stl regex捕获组使用教程
时间: 2023-06-30 18:03:29 浏览: 150
STL中的regex库可以用来进行正则表达式的匹配和替换,而捕获组则可以用来从匹配结果中获取特定的子串。下面是一个简单的示例:
```cpp
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string s = "hello world";
std::regex re("(\\w+) (\\w+)"); // 捕获两个单词
std::smatch match;
if (std::regex_search(s, match, re)) { // 进行匹配
std::cout << "match found: " << match[0] << '\n'; // 整个匹配结果
std::cout << "first word: " << match[1] << '\n'; // 第一个捕获组
std::cout << "second word: " << match[2] << '\n'; // 第二个捕获组
}
return 0;
}
```
输出结果为:
```
match found: hello world
first word: hello
second word: world
```
在上面的代码中,我们首先定义了一个字符串s和一个正则表达式re,正则表达式中使用了两个捕获组,分别用来匹配两个单词。然后我们使用regex_search函数进行匹配,并将匹配结果保存在match变量中。最后,我们从match变量中获取了整个匹配结果以及第一个和第二个捕获组的结果。
需要注意的是,捕获组的编号是从1开始的,而不是从0开始的。另外,match变量是一个std::smatch类型的对象,用来保存匹配结果。在正则表达式中,使用圆括号将需要捕获的子串括起来,圆括号内的内容就是一个捕获组。如果需要匹配多个捕获组,可以使用多个圆括号。
阅读全文