sed正则的扩展与非扩展区别
sed的正则表达式,有扩展正则与基本正则(或叫非扩展正则)之分,默认非扩展。两者区别主要是对几个特殊字符的定义上:即 问号‘?’,加号 ‘+’, 圆括号‘()’, 花括号‘{}’, 竖线管道符 ‘|’
这是个坑,尤其对习惯使用扩展正则语法的用户而言。
我们一般用的是 GNU 的 sed ,以之为例。
具体来说,两者区别是,在基本正则中,上述几个字符本身没有定义特殊功能,与其它普通字符一样,只代表它们字面上的字符。而在扩展正则上,则有相应的定义。
不过,事实上,在基本正则模式下,还是能让这几个字符表示相应的正则符号定义,方法是用反斜线\转义一下。这样就显得有点怪异了,扩展[……]