在大多数情况下,您可以使用来避免变长后视
K。
s/(?<=foo.*)bar/moo/s;
将会
s/foo.*Kbar/moo/s;
负向后看有点棘手。
s/(?<!foo.*)bar/moo/s;
将会
s/^(?:(?!foo).)*Kbar/moo/s;
因为
(?:(?!STRING).)*是
STRING为
[^CHAR]*是
CHAR。
如果您只是匹配,则可能甚至不需要
K。
/foo.*bar/s/^(?:(?!foo).)*bar/s

在大多数情况下,您可以使用来避免变长后视
K。
s/(?<=foo.*)bar/moo/s;
将会
s/foo.*Kbar/moo/s;
负向后看有点棘手。
s/(?<!foo.*)bar/moo/s;
将会
s/^(?:(?!foo).)*Kbar/moo/s;
因为
(?:(?!STRING).)*是
STRING为
[^CHAR]*是
CHAR。
如果您只是匹配,则可能甚至不需要
K。
/foo.*bar/s/^(?:(?!foo).)*bar/s