今天我查看我们项目的源代码时,发现每行末尾都有很多不必要的“空格”和“制表符”。所以我决定用正则表达式删除它们。
但是我发现这个命令sed -i '/\s+$/d'
不起作用。直到我将命令改为see -ri '/\s+$/d'
,它才达到了我的预期。从的手册上看sed
,它说-r
调用扩展正则表达式。
我很困惑,为什么有这么多正则表达式变体?比如 vim/emacs/perl/sed 正则表达式。为什么正则表达式不能提供独特的用户界面?
答案1
由于历史原因。“正则表达式”语法没有统一的定义。正则表达式本身的概念与正式描述它的实际语法无关。人们想出了表达同一事物的不同方式,因此正则表达式语法的风格也不同。
然而,你会发现,目前主要有两组定义:
POSIX 正则表达式指定基本正则表达式 (BRE) 和扩展正则表达式 (ERE)。例如,混淆开始于基本正则表达式用于
\( \)
表示组,而扩展正则表达式用于( )
表示组。基于 Perl 的正则表达式。Perl 正则表达式定义了更一致的语法,例如,反斜杠始终会转义非字母数字字符。如今,从 Java 到 Ruby,许多流行的编程语言中都使用了 Perl 正则表达式语法。
您可以查看维基百科有关正则表达式语法的文章了解更多信息。