C++ C+中的正则表达式+;/明星问题

C++ C+中的正则表达式+;/明星问题,c++,regex,C++,Regex,我不知道为什么正则表达式与下面的字符串不匹配: int main(){ string seq = "0010110"; regex rgx("((1*(01)*1*)*)(00)(1*(01)*1*)*(10)"); cout<<regex_match(seq, rgx)<<endl; system("pause"); return 0; } intmain(){ 字符串seq=“0010110”; regex rgx(((1

我不知道为什么正则表达式与下面的字符串不匹配:

int main(){

    string seq = "0010110";
    regex rgx("((1*(01)*1*)*)(00)(1*(01)*1*)*(10)");

    cout<<regex_match(seq, rgx)<<endl;
    system("pause");
    return 0;
}
intmain(){
字符串seq=“0010110”;
regex rgx(((1*(01)*1*)*)(00)(1*(01)*1*)*(10)”;

cout这可能是你的库(或用法)在贪婪地对待正则表达式时的一个怪癖。
(00)
得到00
(1*(01)*1*。
吸收了
1011
,然后剩下的
(10)
与最后一个0不匹配。然后出于某种原因,你的库没有决定回溯并尝试另一个匹配(谢谢@Paul Rubel,@marog).

它有效。你确定它真的不匹配吗?它对我也有效。RegexBuddy报告了65个步骤的成功匹配。如果我删除最后一颗星,它只需要24个步骤就可以匹配。但是当匹配失败时,它应该回溯,放弃最后一个1并尝试重新匹配。旁注,它在ruby中对我有效,正如所写的。除非这是某种特定的正则表达式库OP的ic怪癖正在使用,这不是真的。贪婪匹配只匹配尽可能多的匹配,同时仍然允许完整模式匹配。