Java正则表达式边界匹配器

时间:2015-08-22 12:19:49

标签: java regex boundary

我正在阅读The Java™ Tutorials, Regular Expressions, Boundary Matchers。 如何在上一次匹配结束后查找dog,而不是在字符串开头时查找\Gdog

例如: dogdog会在dog中找到2个匹配项,但我不想抓住第一个\Gdog,因为它不是在上一个匹配之后(之前没有匹配)。

为什么dog在我们之前没有匹配时与第一个\A匹配?

还有一个问题:输入开始有一个特殊的符号:\a。我如何否定其含义,即“不在输入的开头”。我试过了 \a,但这不起作用。而且,$ionicModal.fromTemplateUrl的含义是什么?

提前致谢。

1 个答案:

答案 0 :(得分:4)

\G标记未得到充分记录。在第一个匹配中,由于它没有“上一个匹配”,因此它匹配字符串的开头。所以它的实际含义是“在输入开始时或在前一个匹配之后匹配”。

你应该注意,如果\Gdog在字符串的开头不匹配,它根本就不匹配“dogdog”。第一个“狗”位于字符串的开头,所以它不匹配。并且第二只狗不匹配,因为第一只狗不匹配......

关于你的第二个问题,负面的背后隐藏会让你与\A"(?<!\\A)"相反。小写“标记”与大写“标记”相反并非总是如此。 Pattern documentation\a列为“铃声字符”,这意味着它将匹配输入中的\u0007