为什么这个正则表达式什么都不匹配? (使用RegExr站点)

时间:2012-01-26 15:31:56

标签: regex

更新:我正在使用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匹配?

3 个答案:

答案 0 :(得分:1)

您正在匹配A*,这意味着0或更多A。现在你在所有3个案例中都得到了这样的匹配:

  1. 在字符串^的状态匹配0长度字符串并停止,因为字符串中的第一个字符为B
  2. 匹配AA并停止,因为第3个字符是空格
  3. 正确匹配所有出现的1个或多个A。
  4. 底线:使用A+将A组合在一起而不是A*

答案 1 :(得分:1)

这看起来好像是regexr网站上的一个错误..使用regexbuddy我看到它通过放置A *来捕获所有AA序列.. - 更重要的是,如果你测试BA *你会看到它正确捕获最后一部分字符串(BAA) - 所以这让我相信引擎被窃听,并且根本不能使用单个char + *令牌。

编辑:如果仔细观察,你会注意到“全局”标志打开(所以匹配所有序列),regxr使A*序列变为红色:表示它无法正确处理它。 (它可能希望无限次匹配0长度的字符串)。

答案 2 :(得分:0)

因为您要将完整字符串与正则表达式进行比较,而A*只接受0或任意数量的As,例如AAAAAAAAAAAAAAAAAAAAAAAAAAA。当它以B开头时,您的句子不匹配。

在第二种情况下,只有第一个AA匹配,因为你在它们后面有一个空格,而你的正则表达式不接受它,所以选择在最后一次遇到A后停止。