正则表达式获得第一个匹配对

时间:2013-09-08 23:33:36

标签: regex

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

如果你有字符串

"monkeys eat bananas, bananas are terrified of monkeys"

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

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

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

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

然而,这失败了,我想因为简单的原因,当评估lookbehind时,\1意味着什么。还有一些我还没有遇到过的正则表达式魔术,这会让我匹配这样的东西吗?

1 个答案:

答案 0 :(得分:1)

许多正则表达式引擎需要反向引用引用的组之后出现(请参阅我的related question关于.NET中的此行为)

尝试使用前瞻:

(\w+)(?=.*\1)