如何在正则表达式中使用前瞻来匹配仅出现在特定上下文中的单词?

时间:2015-11-23 02:44:56

标签: regex

我正在学习正则表达式,现在我在前瞻的章节上。在课堂示例中,如果您想匹配" sea"只有在" seashore",你才能做到:

/(?=seashore)sea/

/sea(?=shore)/

但是,如果我想匹配" shore"只在"海滨"?我试过了:

/(?=seashore)shore/

/(?=sea)shore/

但它们都不起作用。我误解了什么吗?据我所知,lookahead就像是匹配字符串的前提。但为什么我不能匹配一个"岸"只有在"海滨"?任何人都可以给我一个打击?非常感谢!

仅供参考:这是我用来测试我的正则表达式的正则表达式:http://www.regextester.com/

1 个答案:

答案 0 :(得分:0)

如果你的正则表达式引擎支持,你应该使用lookbehind。像这样:

/(?<=sea)shore/

否则(例如在Javascript中,不支持lookbehinds),你必须匹配整个事物并使用捕获组将你想要的部分与其余部分分开。

如果你写/(?=seashore)...它已经预期sea...提前,所以,如果它匹配,它将从那里匹配。如果你使用前瞻,就没有办法从匹配中排除那个东西。