更新:我正在使用this engine来评估我的测试
我突出了比赛:
regex A *
string:BB AA AA BAA
结果:BB AA AA BAA(不匹配)
regex A *
字符串:AA AA BAA
结果:AA
AA BAA
regex A +
string:BB AA AA BAA
结果:BB AA
AA
B AA
我想知道为什么在第一个例子中,没有AA
匹配。为什么在第二个例子中,只有第一个AA
匹配?
答案 0 :(得分:1)
您正在匹配A*
,这意味着0或更多A。现在你在所有3个案例中都得到了这样的匹配:
^
的状态匹配0长度字符串并停止,因为字符串中的第一个字符为B AA
并停止,因为第3个字符是空格底线:使用A+
将A组合在一起而不是A*
。
答案 1 :(得分:1)
这看起来好像是regexr网站上的一个错误..使用regexbuddy我看到它通过放置A *来捕获所有AA序列.. - 更重要的是,如果你测试BA *你会看到它正确捕获最后一部分字符串(BAA) - 所以这让我相信引擎被窃听,并且根本不能使用单个char + *令牌。
编辑:如果仔细观察,你会注意到“全局”标志打开(所以匹配所有序列),regxr使A*
序列变为红色:表示它无法正确处理它。 (它可能希望无限次匹配0长度的字符串)。
答案 2 :(得分:0)
因为您要将完整字符串与正则表达式进行比较,而A*
只接受0或任意数量的As,例如A
,AA
或AAAAAAAAAAAAAAAAAAAAAAAA
。当它以B
开头时,您的句子不匹配。
在第二种情况下,只有第一个AA
匹配,因为你在它们后面有一个空格,而你的正则表达式不接受它,所以选择在最后一次遇到A后停止。