BRE与ERE的区别

BRE与ERE的区别

Content #

POSIX 规范定义了正则表达式的两种标准:

  1. BRE 标准(Basic Regular Expression 基本正则表达式);
  2. ERE 标准(Extended Regular Expression 扩展正则表达式)。

早期 BRE 与 ERE 标准的区别主要在于,BRE 标准不支持量词问号和加号,也不支持多选分支结构管道符。BRE 标准在使用花括号,圆括号时要转义才能表示特殊含义。BRE 标准用起来这么不爽,于是有了 ERE 标准,在使用花括号,圆括号时不需要转义了,还支持了问号、加号 和 多选分支。

我们现在使用的 Linux 发行版,大多都集成了 GNU 套件。GNU 在实现 POSIX 标准时,做了一定的扩展,主要有以下三点扩展。

  1. GNU BRE 支持了 +、?,但转义了才表示特殊含义,即需要用\+、\?表示。
  2. GNU BRE 支持管道符多选分支结构,同样需要转义,即用 \|表示。
  3. GNU ERE 也支持使用反引用,和 BRE 一样,使用 \1、\2…\9 表示。

BRE 标准和 ERE 标准的详细区别,浅黄色背景是 BRE 和 ERE 不同的地方,三处天蓝色字体是 GNU 扩展。

总之,GNU BRE 和 GNU ERE 它们的功能特性并没有太大区别,区别是在于部分语法层面上,主要是一些字符要不要转义。

Viewpoints #

From #

07 | 正则有哪些常见的流派及其特性?