"\\w*=.*?(?=,)" 可以匹配 "sd=23d_f" 但是不能匹配"你好=23d_f",修改一下
时间: 2023-11-12 11:09:12 浏览: 82
如果你想修改正则表达式,使其能够匹配包含非字母数字字符的键和值,例如 `"你好=23d_f"`,可以使用 `[\p{L}\p{N}]+` 来匹配键和值中的字母数字字符。
以下是修改后的示例代码:
```cpp
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = "key1=value1,key2=value2,key3=你好=23d_f,";
std::regex pattern("([\\p{L}\\p{N}]+)=.*?(?=,)");
std::smatch match;
while (std::regex_search(input, match, pattern)) {
std::cout << match.str() << std::endl;
input = match.suffix().str();
}
return 0;
}
```
在上述示例中,我们使用 `([\p{L}\p{N}]+)=.*?(?=,)` 正则表达式来匹配包含非字母数字字符的键和值。`[\p{L}\p{N}]+` 表示匹配一个或多个字母数字字符,`=` 表示等于号,`.*?` 表示非贪婪匹配任意字符,`(?=,)` 表示正向查找断言,匹配逗号之前的位置。
输出结果将是:
```
key1=value1
key2=value2
key3=你好=23d_f
```
现在正则表达式可以正确匹配包含非字母数字字符的键和值了。
阅读全文