regex_search如何获得捕获组
时间: 2023-07-26 19:05:42 浏览: 180
regex_extend.rar_python
在 C++ 中,可以使用 `std::smatch` 类型来存储匹配结果,并从中获取捕获组。具体步骤如下:
1. 创建一个 `std::smatch` 对象,用于存储匹配结果。
```c++
std::smatch match;
```
2. 使用 `std::regex_search` 函数进行正则表达式匹配,并将匹配结果存储在 `match` 对象中。
```c++
std::string str = "Hello, world!";
std::regex regex("([a-z]+), ([a-z]+)!");
if (std::regex_search(str, match, regex)) {
// 匹配成功,可以获取捕获组
} else {
// 匹配失败
}
```
3. 使用 `std::smatch` 的 `operator[]` 或 `str()` 方法获取捕获组。
```c++
// 获取第一个捕获组
std::string captured1 = match[1].str();
```
需要注意的是,如果正则表达式中没有使用捕获组,那么 `std::smatch` 中也不会有任何捕获组。此外,如果正则表达式中使用了命名捕获组,可以使用 `std::ssub_match` 类型的 `named_captures` 方法来获取命名捕获组。
阅读全文