我正在阅读The Java™ Tutorials, Regular Expressions, Boundary Matchers。
如何在上一次匹配结束后查找dog
,而不是在字符串开头时查找\Gdog
。
例如:
dogdog
会在dog
中找到2个匹配项,但我不想抓住第一个\Gdog
,因为它不是在上一个匹配之后(之前没有匹配)。
为什么dog
在我们之前没有匹配时与第一个\A
匹配?
还有一个问题:输入开始有一个特殊的符号:\a
。我如何否定其含义,即“不在输入的开头”。我试过了
\a
,但这不起作用。而且,$ionicModal.fromTemplateUrl
的含义是什么?
提前致谢。
答案 0 :(得分:4)
\G
标记未得到充分记录。在第一个匹配中,由于它没有“上一个匹配”,因此它匹配字符串的开头。所以它的实际含义是“在输入开始时或在前一个匹配之后匹配”。
你应该注意,如果\Gdog
在字符串的开头不匹配,它根本就不匹配“dogdog”。第一个“狗”位于字符串的开头,所以它不匹配。并且第二只狗不匹配,因为第一只狗不匹配......
关于你的第二个问题,负面的背后隐藏会让你与\A
:"(?<!\\A)"
相反。小写“标记”与大写“标记”相反并非总是如此。 Pattern
documentation将\a
列为“铃声字符”,这意味着它将匹配输入中的\u0007
。