{"name": "Tom", "age": 18} C++正则表达式取 同时可取name和age值
时间: 2023-09-05 10:13:55 浏览: 46
可以使用 C++ 中的正则表达式库 `std::regex` 来提取字符串中的内容。例如,对于给定的字符串 `{"name": "Tom", "age": 18}`,可以使用以下代码来提取其中的 `name` 和 `age` 值:
```c++
#include <iostream>
#include <regex>
int main() {
std::string s = R"({"name": "Tom", "age": 18})"; // 原始字符串,注意使用 R 前缀
std::regex r(R"("name": "(\w+)", "age": (\d+))"); // 正则表达式,注意使用 R 前缀
std::smatch m; // 匹配结果存储在 smatch 对象中
if (std::regex_search(s, m, r)) {
std::cout << "name: " << m[1].str() << std::endl;
std::cout << "age: " << m[2].str() << std::endl;
}
return 0;
}
```
输出:
```
name: Tom
age: 18
```
在正则表达式 `R"("name": "(\w+)", "age": (\d+))"` 中,使用了两个捕获组 `(\w+)` 和 `(\d+)` 分别匹配 `name` 和 `age` 的值。在代码中,使用 `smatch` 对象 `m` 存储匹配结果,`m[1]` 表示第一个捕获组的结果,即 `name` 的值,`m[2]` 表示第二个捕获组的结果,即 `age` 的值。