念心科道尊 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 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制