深色模式
正则表达式 - 扩展正则
扩展正则表达式(Extended Regular Expressions,,在很多文档中常缩写为 ERE)在基本正则表达式上进行了扩展,支持更多的特殊字符,部分特殊字符的使用场景发生了变化,特殊字符是否需要使用\
进行转义的场景也发生了变化。
特殊字符
扩展正则在基础正则6个特殊字符的基础上,新增6个特殊字符,一共12个特殊字符。
.
同基础正则。
[
同基础正则。
\
同基础正则。
在扩展正则表达式中,
\(
匹配(
字符自身。而基本正则表达式中,\(
是子表达式的开头,基本正则表达式就用(
来匹配字符(
自身。*
同基础正则。
^
$
(
(
和)
组成子表达式。)
(
和)
组成子表达式。{
{
与}
组成区间表达式。|
表式或。
+
匹配一个或连续多个上一个 BRE 表达式。
?
匹配零个或一个上一个 BRE 表达式。
用于非贪婪匹配。
基础正则与扩展正则的差异
基本正则表达式支持方括号 []
表达式、子表达式 \( \)
、反向引用表达式 \n
、区间表达式 \{m,n\}
。
扩展正则表达式对这些表达式的支持情况、以及跟基本正则表达式之间的差异说明如下:
- 扩展正则表达式的方括号
[]
表达式规则和基本正则表达式相同,包括字符类表达式、范围表达式的用法也相同。 - 扩展正则表达式用两个小括号
( )
特殊字符来组合里面的字符,POSIX 标准文档称之为 grouping,不再称之为 subexpression。这个小括号( )
组合跟基本正则表达式的\( \)
子表达式作用相似,看起来只是写法不同。 - 扩展正则表达式不支持反向引用表达式
\n
。 - 扩展正则表达式的区间表达式写法是
{m}
、{m,}
、或者{m,n}
。相比于基本正则表达式的写法,在大括号前面不需要添加 `` 字符,表达式的作用相同