好的,所以我正在使用C ++正则表达式,而且我不太确定如何从表达式中提取我想要的数字。
我根据数字构建表达式,但不确定如何将它们拉回来。
这是我的字符串:
+10.7% Is My String +5 And Some Extra Stuff Here
我使用该字符串来提取数字
10
,7
,5
将其添加到矢量中,没什么大不了的。
然后我将该字符串更改为正则表达式。
\+([0-9]+)\.([0-9]+)% Is My String \+([0-9]+) And Some Extra Stuff Here
现在我该如何使用该regexp表达式来匹配我的起始字符串并将数字提取出去。
使用匹配表的方法是什么?
答案 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