2

鉴于您可以在正则表达式模式中引用捕获组,是否可以在 a 中使用所述捕获组lookbehind

如果你有字符串

"monkeys eat bananas, bananas are terrified of monkeys"

香蕉是第一个匹配的对,而猴子是第一个匹配的单词。我可以毫无问题地得到猴子

(\w+).*\1 # returns monkeys

但是如果我想得到第一个匹配的单词,我需要能够做这样的事情

(?<=\1)(\w+)

但是,这失败了,我猜的原因很简单,即在lookbehind评估时,\1没有任何意义。是否还有一些我还没有遇到过的正则表达式魔法,可以让我匹配这样的东西?

4

1 回答 1

1

许多正则表达式引擎要求在它们引用的组之后出现反向引用(请参阅我在 .NET 中有关此行为的相关问题)

尝试使用前瞻代替:

(\w+)(?=.*\1)
于 2013-09-08T23:42:28.360 回答