我正在学习正则表达式,现在我在前瞻的章节上。在课堂示例中,如果您想匹配" sea"只有在" seashore",你才能做到:
/(?=seashore)sea/
或
/sea(?=shore)/
但是,如果我想匹配" shore"只在"海滨"?我试过了:
/(?=seashore)shore/
和
/(?=sea)shore/
但它们都不起作用。我误解了什么吗?据我所知,lookahead就像是匹配字符串的前提。但为什么我不能匹配一个"岸"只有在"海滨"?任何人都可以给我一个打击?非常感谢!
仅供参考:这是我用来测试我的正则表达式的正则表达式:http://www.regextester.com/
答案 0 :(得分:0)
如果你的正则表达式引擎支持,你应该使用lookbehind。像这样:
/(?<=sea)shore/
否则(例如在Javascript中,不支持lookbehinds),你必须匹配整个事物并使用捕获组将你想要的部分与其余部分分开。
如果你写/(?=seashore)...
它已经预期sea...
提前,所以,如果它匹配,它将从那里匹配。如果你使用前瞻,就没有办法从匹配中排除那个东西。