我不知道为什么正则表达式与下面的字符串不匹配:
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;
}
当我删除最后一个大字符串时,问题就解决了。
请帮帮我。
答案 0 :(得分:3)
这可能是你的图书馆(或用法)贪婪地处理正则表达式的怪癖。 (00)
得到00 (1*(01)*1*)*
糟透了1011
,然后剩余的(10)
与最后的{{1}}不匹配。然后由于某种原因,你的图书馆没有决定回溯尝试另一场比赛(感谢@Paul Rubel,@。今日。)