C ++ regex_search()不适用于star-quantifier

时间:2017-05-01 05:50:18

标签: regex c++11

我在Linux上用g ++ 5.4.0编译它

string s = "ans42";
smatch result;

if (regex_search(s, result, regex("\\d*")))
    cout << result.str() << endl;

如果我将42更改为\\d*,则上方与\\d+匹配。但是AFAIK都很贪心,所以两者都应该有效!是什么给了什么?

1 个答案:

答案 0 :(得分:2)

您匹配了一个空序列。 (在这种情况下result.position()==0

更改为if (regex_search(s, result, regex("\\d*"), std::regex_constants::match_not_null)),因此匹配至少需要一个字符。

它适用于gcc 6.1(打印42