为什么有这么多正则表达式变体?

为什么有这么多正则表达式变体?

今天我查看我们项目的源代码时,发现每行末尾都有很多不必要的“空格”和“制表符”。所以我决定用正则表达式删除它们。

但是我发现这个命令sed -i '/\s+$/d'不起作用。直到我将命令改为see -ri '/\s+$/d',它才达到了我的预期。从的手册上看sed,它说-r调用扩展正则表达式。

我很困惑,为什么有这么多正则表达式变体?比如 vim/emacs/perl/sed 正则表达式。为什么正则表达式不能提供独特的用户界面?

答案1

由于历史原因。“正则表达式”语法没有统一的定义。正则表达式本身的概念与正式描述它的实际语法无关。人们想出了表达同一事物的不同方式,因此正则表达式语法的风格也不同。

然而,你会发现,目前主要有两组定义:

  1. POSIX 正则表达式指定基本正则表达式 (BRE) 和扩展正则表达式 (ERE)。例如,混淆开始于基本正则表达式用于\( \)表示组,而扩展正则表达式用于( )表示组。

  2. 基于 Perl 的正则表达式。Perl 正则表达式定义了更一致的语法,例如,反斜杠始终会转义非字母数字字符。如今,从 Java 到 Ruby,许多流行的编程语言中都使用了 Perl 正则表达式语法。

您可以查看维基百科有关正则表达式语法的文章了解更多信息。

相关内容