Java正则表达式边界匹配器

Java正则表达式边界匹配器,java,regex,boundary,Java,Regex,Boundary,我正在读书。 当狗在上一个匹配结束后,而不是在字符串开头时,我如何才能找到它 例如: \Gdog将在dogdog中找到2条匹配项,但我不想捕捉第一条狗,因为它不在前一条匹配项之后(之前没有匹配项) 为什么\Gdog与第一只狗匹配,而我们之前没有匹配 还有一个问题:输入的开始有一个特殊符号:\A。我怎样才能否定它的意思,即“不是在输入的开始”。我试过了 \a,但这不起作用。那么,\a的含义是什么 请提前感谢。正在记录\G标记。在第一个匹配中,由于它没有“上一个匹配”,所以它在字符串的开头匹配。因此

我正在读书。 当狗在上一个匹配结束后,而不是在字符串开头时,我如何才能找到它

例如:
\Gdog
将在
dogdog
中找到2条匹配项,但我不想捕捉第一条
狗,因为它不在前一条匹配项之后(之前没有匹配项)

为什么
\Gdog
与第一只
狗匹配,而我们之前没有匹配

还有一个问题:输入的开始有一个特殊符号:
\A
。我怎样才能否定它的意思,即“不是在输入的开始”。我试过了
\a
,但这不起作用。那么,
\a
的含义是什么


请提前感谢。

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

您应该注意,如果
\Gdog
在字符串开头不匹配,那么它就根本不会匹配“dogdog”。第一个“dog”位于字符串的开头,因此它不匹配。第二只狗不匹配,因为第一只狗不匹配


至于你的第二个问题,反向查找将允许你执行与
\a
相反的操作:
“(?标记
\G
的文档不足。在第一个匹配中,由于它没有“上一个匹配”,所以它在字符串的开头匹配。因此它的实际含义是”在输入开始或上一次匹配后进行匹配”

您应该注意,如果
\Gdog
在字符串开头不匹配,它将根本不匹配“dogdog”。第一个“dog”在字符串开头,因此它不匹配。第二个dog不匹配,因为第一个dog不匹配


至于你的第二个问题,消极的回望会让你做与
\a
“(?“再问一个问题”-请试着在每篇文章中只问一个问题。可能是@AndyBrown的重复,我知道我应该只发布我的问题,但实际上它与第一个问题结合在一起(因为第一个问题我要求解决,所以第二个问题是找到具体的解决方案)。我写了第二个问题,因为可读性。谢谢链接。“还有一个问题”-请尝试每个帖子只问一个问题。可能是@AndyBrown的重复,我知道我应该只发布我的问题,但实际上它与第一个问题结合在一起(因为我要求的第一个问题是解决方案,所以第二个问题是找到具体的解决方案)我写了第二个问题,因为它的可读性。谢谢你的链接。非常感谢。在我看来,文档是错误的,因为正如你所说(这是真的)“在输入的开始或之前的匹配之后匹配”。非常感谢。在我看来,文档是错误的,因为正如你所说(这是真的)“在输入开始或上一次匹配后匹配”。