C++正则表达式如何捕获所有匹配的部分?

//实际上没学过正则表达式,只是完成作业时想到的……比如输入"1,12,3,4,5,6,2,3,4,5",如何将所有数字提取出来?如果regexe("([^,]{1,})... //实际上没学过正则表达式,只是完成作业时想到的……
比如输入"1,12,3,4,5,6,2,3,4,5",如何将所有数字提取出来?
如果regex e("([^,]{1,})");那么regex_search出来的肯定只有第一个……
当然,如果有不用正则的方法我也洗耳恭听。
展开
 我来答
_无悔丶前進
推荐于2017-11-23 · TA获得超过144个赞
知道小有建树答主
回答量:81
采纳率:100%
帮助的人:41万
展开全部
#include<iostream>
#include<vector>
#include<string>
#include<regex>
#include <iterator>
int main() 
{
    std::string strng("1,12,3,4,5,6,2,3,4,5");
    std::regex re(",");
    std::sregex_token_iterator p(strng.begin(), strng.end(), re, -1);
    std::sregex_token_iterator end;
    std::vector<std::string> vec;
    while (p != end)
        vec.push_back(*p++);
    std::copy(vec.begin(),vec.end(),std::ostream_iterator<std::string>(std::cout," "));
    std::cout<<std::endl;
    return 0;
}

这是针对你的代码用,来区分数字的


需要开启C++11的支持 编译选项添加 -std=c++11

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式