解释正则表达式中的环视

问题描述 投票:0回答:1

为了将

'
放在所有
Jeffs
中的 s 之前,我测试了这两个不同的正则表达式,并通过 PERL 得到了不同的结果,如下所示:

 perl -pe "s/(?<=\bJeff)(?=s)\b/'/g" myfile.txt

(?<=\bJeff)(?=s\b)
\b(?<=\Jeff)(?=s)\b
有什么区别?

我的意思是进行内部/外部环视。

regex regex-lookarounds
1个回答
0
投票

当您将

\b
放在环视之前时,在匹配
\b
时,不会跳过环视匹配的输入部分。这意味着它必须紧接在
s
之前匹配,而不是在
Jeff
之前。因此,您要匹配
Jeff
s
之间的单词边界,这是不可能的,因为它们都是同一个单词的一部分。它实际上相当于

(?<=Jeff)\b(?=s\b)
© www.soinside.com 2019 - 2024. All rights reserved.