{"ROWNO":"1","备注":"","电子健康卡":"sss"} C++正则表达式取键和值
时间: 2023-09-03 08:08:25 浏览: 111
可以使用C++标准库中的正则表达式库`<regex>`来实现。下面是一个示例代码,可以取出键和值:
```C++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = R"({"ROWNO":"1","备注":"","电子健康卡":"sss"})";
std::regex pattern(R"(([^:{}\"]+)|(\".+\"))");
auto it = std::sregex_iterator(input.begin(), input.end(), pattern);
while (it != std::sregex_iterator()) {
std::smatch match = *it;
std::string str = match.str();
// 去除可能存在的引号
if (str.front() == '\"' && str.back() == '\"') {
str = str.substr(1, str.size() - 2);
}
std::cout << str << '\n';
++it;
}
return 0;
}
```
输出结果为:
```
ROWNO
1
备注
电子健康卡
sss
```
其中,正则表达式`([^:{}\"]+)|(\".+\")`的含义为:
- `[^:{}\"]+`匹配不包含`{`、`}`、`:`、`"`的连续字符;
- `|`表示或者,`(\".+\")`匹配由引号包含的连续字符。
由于输出结果中的键和值都是字符串,因此需要去除可能存在的引号,即将`"ROWNO"`转换为`ROWNO`。
阅读全文