是否可以在 中进行前向或后向零宽度断言sed
?我想效仿 Perl(?=)
及其家族。
我的 sed 不是 GNU sed 版本 4.0。
答案1
不,没有。你只有基本正则表达式,只有字符集 (.
和[…]
)、重复 (*
和)、行锚点 (和) 和分组,以及反向引用。一些 sed 实现有更多的重复语法 (和)、交替 ( )、附加锚点 ( , , , )。据我所知,没有一个有通用的零宽度断言,您需要转向 Perl(或其他支持 PCRE 的工具)。\{m,*n*\}
^
$
\(…\)
\N
\+
\?
\|
\b
\B
\<
\>
零宽度断言的许多用途可以使用反向引用通过通用正则表达式进行模拟。例如Perls/foo(?=bar)/FOO/
可以这样写s/foo\(bar\)/FOO\1/
。