我有这样的文本,其中包含一个列表对,每对都包含一个数据列表以及该数据与其他数据的连接:
{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 ++?