念心科道尊 2020-01-28 23:14 采纳率: 0%
浏览 552

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;
    }

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

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

1条回答 默认 最新

  • threenewbee 2020-01-29 09:59
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备