C ++ / Star问题中的正则表达式

时间:2011-03-15 21:00:06

标签: 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;
}

当我删除最后一个大字符串时,问题就解决了。

请帮帮我。

1 个答案:

答案 0 :(得分:3)

这可能是你的图书馆(或用法)贪婪地处理正则表达式的怪癖。 (00)得到00 (1*(01)*1*)*糟透了1011,然后剩余的(10)与最后的{{1}}不匹配。然后由于某种原因,你的图书馆没有决定回溯尝试另一场比赛(感谢@Paul Rubel,@。今日。)