C++正则表达式,如何得到匹配结果的分组???

    regex reg1("(\\d+(\\.\\d+)?(e[\\+\\-]?\\d+)?)|([a-zA-Z\\_]\\w*)|(,)|([\\+\\-\\*\\/\\^\\%\\(\\)])");
    string str1 = "43+12 - Print(3,4)*7";
    smatch sm1;
    for (sregex_token_iterator it(str1.begin(),str1.end(),reg1), it_end;it!=it_end; ++it) {
        cout << it->str() << endl;
    }

我匹配一个字符串,把不同种类的分出来,并且在分组来时还能知道是哪个正则分组匹配到的。。。不然我只能在分出来后,再做多次匹配了。。。

  • 所以我想只用一次匹配,不但把匹配到的字符串都找出来,还能得到对应的分组是哪个!!!

c++标准库的regex不支持named grouping。所以只能根据分组出来的顺序了
规则是从外向内,再从前向后,比如
((ab(c))(d))匹配abcd
依次是
abcd
abc
d
c