我在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都很贪心,所以两者都应该有效!是什么给了什么?
答案 0 :(得分:2)
您匹配了一个空序列。 (在这种情况下result.position()==0
)
更改为if (regex_search(s, result, regex("\\d*"), std::regex_constants::match_not_null))
,因此匹配至少需要一个字符。
它适用于gcc 6.1(打印42
)