从字符串中提取数字(Regex C ++)

时间:2014-12-10 11:41:24

标签: c++ regex expression

让我说我有一个字符串S = "1 this is a number=200; Val+54 4class find57"

我想使用Regex仅提取这些数字:

   num[1] = 1
   num[2] = 200
   num[3] = 54

而不是“4class”中的4或“find57”中的57,这意味着只有被Operatorsspace包围的数字。 我尝试了这段代码但没有结果:

std::string str = "1 this is a number=200; Val+54 4class find57";
 boost::regex re("(\\s|\\-|\\*|\\+|\\/|\\=|\\;|\n|$)([0-9]+)(\\s|\\-|\\*|\\+|\\/|\\;|\n|$)");
 boost::sregex_iterator m1(str.begin(), str.end(), re);
 boost::sregex_iterator m2;
 for (; m1 != m2; ++m1) {

    advm1->Lines->Append((*m1)[1].str().c_str());

                        } 

顺便说一下我使用c++ Builder XE6.

1 个答案:

答案 0 :(得分:2)

只使用字边界。 \b匹配单词字符和非单词字符。

\b\d+\b

OR

\b[0-9]+\b

DEMO

如果需要,可以再次转义反斜杠,例如\\b\\d+\\b\\b[0-9]+\\b