在学习Linux命令行,shell脚本,甚至是vim时,有许多命令需要用到正则表达式。正则表达式有很多种,但是最常用的可能就是POSIX(Portable Operating System Interface,可移植操作系统接口)正则表达式。
POSIX正则表达式分为基本正则表达式(basic regular expression,简称BRE)和扩展正则表达式(extended regular expression,简称ERE)。
本文主要是对BRE和ERE的高度总结,让自己能分清楚它们的差别,也方便自己记住。
BRE
BRE首先包括界定行首和行尾的字符,也就是^和$。
然后就是匹配任意一个字符,有两种方法
- 用点
.
匹配任意一个字符 - 用
[]
匹配字符集中的任意一个字符。特别地,在[]
中,首字符为^
表示字符集取反,-
表示一个区间。
最后是匹配多个字符,使用数量限定符星号*
,它限定的数量是0到无数个。
BRE很简单,就这么点内容。
ERE
ERE就是在BRE基础上进行扩展。
首先是对字符集[]
的扩展。[]
只能匹配字符集中任意一个字符,而(|)
能匹配字符串集中的任意一个字符串。
然后是对数量限定符的扩展。BRE使用*
表示0个或多个,而ERE使用?
表示0个或1个,使用+
表示1个或多个,使用{}
指定任意范围。
总结
总结下。
BRE元字符为 ^ $ . * []
ERE元字符为 (|) ? + {}
参考
GNU使用的各种正则表达式
https://www.gnu.org/software/findutils/manual/html_mono/find.html#Regular-Expressions