C ++ RegEx匹配 - 拉出匹配的数字

时间:2015-06-10 08:04:32

标签: c++ regex

好的,所以我正在使用C ++正则表达式,而且我不太确定如何从表达式中提取我想要的数字。

我根据数字构建表达式,但不确定如何将它们拉回来。

这是我的字符串:

+10.7% Is My String +5 And Some Extra Stuff Here

我使用该字符串来提取数字 1075将其添加到矢量中,没什么大不了的。 然后我将该字符串更改为正则表达式。

\+([0-9]+)\.([0-9]+)% Is My String \+([0-9]+) And Some Extra Stuff Here

现在我该如何使用该regexp表达式来匹配我的起始字符串并将数字提取出去。

使用匹配表的方法是什么?

1 个答案:

答案 0 :(得分:1)

您必须遍历子匹配以提取它们。

示例:

#include <iostream>
#include <string>
#include <regex>

int main()
{
    std::string input = "+10.7% Is My String +5 And Some Extra Stuff Here";
    std::regex rx("\\+([0-9]+)\\.([0-9]+)% Is My String \\+([0-9]+) And Some Extra Stuff Here");

    std::smatch match;

    if (std::regex_match(input, match, rx))
    {
        for (std::size_t i = 0; i < match.size(); ++i)
        {
            std::ssub_match sub_match = match[i];
            std::string num = sub_match.str();
            std::cout << " submatch " << i << ": " << num << std::endl;
        }   
    }
}

输出:

 submatch 0: +10.7% Is My String +5 And Some Extra Stuff Here
 submatch 1: 10
 submatch 2: 7
 submatch 3: 5

直播示例:https://ideone.com/01XJDF