Java正则表达式边界匹配器



我正在阅读Java™教程,正则表达式,边界匹配器。我怎么能找到dog时,它是在之前的比赛结束后,而不是当它是在字符串的开始。

例如

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

为什么Gdog匹配第一个dog,当我们没有前一个匹配?

还有一个问题:输入开始有一个特殊的符号:A。我怎么能否定它的意义呢?"不是在输入的开始"。我试过了a,但这不起作用。a是什么意思?

G标记文件不足。在第一个匹配中,因为它没有"前一个匹配",所以它在字符串的开头匹配。因此,它的实际含义是"在输入的开头或在前一个匹配之后匹配"。

您应该注意,如果Gdog在字符串的开头不匹配,它将根本不匹配"dogdog"。第一个"狗"位于字符串的开头,因此不匹配。第二只狗不匹配,因为第一只狗不匹配…

至于你的第二个问题,一个消极的向后看将允许你做与A相反的事情:"(?<!\A)"。小写的"marker"与大写的"marker"并不总是相反的。Pattern文档将a列为"bell字符",这意味着它将匹配输入中的u0007

最新更新