c++ - 正则表达式多次匹配相同的模式
问题描述
我有这样的文本,其中包含一个列表对,每一对都包含一些数据的列表以及该数据与其他数据的连接:
{data={data1,data2},connection=data3}, {{data4},data5}, {{data6},data7}, ...
我需要从每一对中提取数据条目,即我需要data1
,data2
等data3
。这是我想出的正则表达式:
(\{(?:\S*=)?\{\S+\})(?:,(?:\S*=)?\}\S+)?
regex101.com将模式与文本匹配并将字符串分成以下组:
{data={data1,data2},connection=data3}
, {{data4},data5}
, {{data6},data7}
(对于每个我都需要运行另一个正则表达式)。但是,我的 C++ 与字符串不匹配:
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string text{ "{data={data1,data2},connection=data3}, {{data4},data5}, {{data6},data7}" };
const std::regex rx{ R"data((\{\S*\{\S+\})(?:,(\S*=)?\}\S+)?)data" };
std::smatch matches;
if (std::regex_match(text, matches, rx))
{
std::cout << matches.size() << std::endl;
}
system("pause");
}
我应该如何在 C++ 中做到这一点?
解决方案
推荐阅读
- javascript - 从 Javascript Promise 读取数据
- kubernetes - 使用 hostpath 与 Kind Kubernetes Cluster 共享本地目录
- linux - 通过使用 getopts 将凭据作为参数传递,无法从 linux 连接到 sqlplus
- oracle - 在 OBIEE 12C 中调整报告大小
- flutter - 如何通过单击flutter中的排序按钮对卡片列表进行排序(根据名称)
- qt - 如何在 Qt Creator 的 ui.qml 文件中调用函数
- react-native - 在 React Native Expo 上添加用于身份验证流程的加载器
- amazon-web-services - AWS ALB 中的超时值
- javascript - 尝试使用动态道具渲染相同的反应组件(道具来自 json 文件)
- javascript - 失败:模块“DynamicTestModule”导入的意外值“TreeviewConfig”。请在单元测试中添加@NgModule 注解