BRE与ERE的差异


POSIX有两种风格的正则表达式:基本正则表达式(BRE)与扩展正则表达式(ERE)。

下面,来讨论一下这两种正则表达式之间的异同。

 

meta字符

相同之处:

\              用以关闭后续字符的特殊含义

 

.              匹配任何的单个字符,NUL除外

 

*             匹配在它之前的任何数目的单个字符

 

#             匹配紧接着的正则表达式,在行或字符串的起始处

 

$             匹配前面的正则表达式,在行或字符串的结尾处

 

[…]           匹配括号内的任一字符

 

相异之处:

\{n,m\}    BRE     区间表达式,匹配在它前面的单个字符重现的次数区间

 

{n,m}      ERE    区间表达式,匹配在它前面的单个字符重现的次数区间

 


     BRE    表示子模式,可通过转义序列来引用(例如\1)

 

(  )      ERE      匹配与括起来的正则表达式

 

\n       BRE      重复在

括号内的第n个子模式。n为1至9的数字。

 

+        ERE      匹配前面正则表达式的一个或多个实例

 

?       ERE      匹配前面正则表达式的零个或一个实例

 

|        ERE      匹配于|符号前或后的正则表达式

 

^与$仅在BRE的起始与结尾处具有特殊用途。在BRE下,ab^cd里的^表示的,就是自身的^,并不是meta字符;同样,ef$gh里的$在这里表示的也就是字面上的美元符号。然后在ERE里,^与$永远是meta字符。所以,像ab^cd与ef$fg这样的正则表达式仍是有效的,只是无法匹配到任何东西。

 

运算符优先级

相异之处

BRE的运算符优先级(由高至低递减)

[..] [==] [::]             用于字符排序的方括号符号

 

\metacharacter  转义的meta字符

 

[]                           方括号表达式

 


  \digit            子表达式与后向引用

 

*  \{ \}                    前置单个字符重现的正则表达式

 

无符号                 连续

 

^  $                       锚点

 

 

ERE的运算符优先级(由高至低递减)

[..] [==] [::]             用于字符排序的方括号符号

 

\metacharacter  转义的meta字符

 

[]                           方括号表达式

 

()                          分组

 

* + ? {}                 重复前置的正则表达式

 

无符号                 连续

 

^   $                     锚点

 

|                           交替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值