使用boost regex提取所有短划线分隔的数字

时间:2012-03-13 06:49:32

标签: c++ regex boost

我想使用boost regex从c ++中的字符串中提取所有短划线数字(如232-65) 我使用这种模式

\\d*-\\d*

但仅检测到第一个匹配。我该怎么做才能提取所有匹配的模式。

示例输入:

"2 1 5-25 37 42 43 53 69-119 123-514"

输出只有5-25但必须是5-25 69-119 123-514

我的示例代码是

    cmatch res;

boost::regex port("\\d*-\\d*");

regex_search(s,res, port);

for (unsigned int i = 0; i < res.size(); ++i) {
    cout << res[i] << endl;
}

1 个答案:

答案 0 :(得分:0)

您希望在正则表达式中嵌入带括号的“子表达式”,这将在匹配过程中提取。去阅读提升页面,搜索子表达式匹配....