sed 中有零宽度断言吗?

6 sed regular-expression

是否可以在 中进行前瞻或后视零宽度断言sed?我想效仿 Perl(?=)和家人。

我的 sed 不是 GNU sed 4.0 版。

Gil*_*il' 3

不,没有。您只有基本的正则表达式,其中只有字符集(.[\xe2\x80\xa6])、重复(*和)、行锚点(和)和分组,以及反向引用。一些 sed 实现有更多的重复语法 (和)、交替 ( )、附加锚点 ( , , ,\\{m,*n*\\}^$\\(\xe2\x80\xa6\\)\\N\\+\\?\\|\\b\\B\\<\\> )。据我所知,没有一个有通用的零宽度断言,您需要转向 Perl(或其他支持 PCRE 的工具)。

\n\n

零宽度断言的许多用途可以使用反向引用通过通用正则表达式进行模拟。例如Perls/foo(?=bar)/FOO/可以这样写s/foo\\(bar\\)/FOO\\1/

\n