正则表达式多次匹配相同的模式

时间:2019-01-30 17:14:49

标签: c++ regex c++11 pattern-matching regex-group

我有这样的文本,其中包含一个列表对,每对都包含一个数据列表以及该数据与其他数据的连接:

  

{data = {data1,data2},connection = data3},{{data4},data5},{{data6},data7},...

我需要从每对中提取数据条目,即我需要data1data2data3等。 这是我想出了正则表达式:

(\{(?:\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 ++?

0 个答案:

没有答案