为了将
'
放在所有 Jeffs中的
s
之前,我测试了这两个不同的正则表达式,并通过 PERL 得到了不同的结果,如下所示:
perl -pe "s/(?<=\bJeff)(?=s)\b/'/g" myfile.txt
(?<=\bJeff)(?=s\b)
和 \b(?<=\Jeff)(?=s)\b
有什么区别?
我的意思是进行内部/外部环视。
当您将
\b
放在环视之前时,在匹配 \b
时,不会跳过环视匹配的输入部分。这意味着它必须紧接在 s
之前匹配,而不是在 Jeff
之前。因此,您要匹配 Jeff
和 s
之间的单词边界,这是不可能的,因为它们都是同一个单词的一部分。它实际上相当于
(?<=Jeff)\b(?=s\b)