正则表达式与通配符有部分相似之处,但正则表达式更复杂也更强大。

通配符用于(完全)匹配文件名,支持通配符的命令有:ls、find、cp等;

正则表达式用于在文件中(包含)匹配字符串,支持的命令有:grep、awk、sed等。

正则表达式元字符

正则表达式由正则表达式元字符组成,而元字符又分为基本正则表达式元字符和扩展正则表达式元字符,两者基本相同,有少许差异。

基本正则表达式元字符

元字符 作用
|转义符
匹配字符
. 匹配除换行符外任意一个字符
[ ] 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
[ ^ ] 匹配[ ]中字符以外的任意字符
匹配次数
* 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
\? 匹配前一个字符0次或1次
\+ 匹配前一个字符1次或多次
\ 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
\ 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
\ 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
位置锚定
^ 匹配行首,如^hello匹配以hello开头的行
$ 匹配行尾,如$:空白行,[:space:]*$:空(白)行
\< 或 \b 匹配词首
\> 或 \b 匹配词尾
\<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
分组与引用
\(模式\) 将1个或多个字符当作一个整体处理,支持模式
\n 第n组括号之间的模式(即分组)所匹配到的字符

扩展正则表达式元字符

元字符 作用
|转义符
匹配字符
. 匹配除换行符外任意一个字符
[ ] 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
[ ^ ] 匹配[ ]中字符以外的任意字符
匹配次数
* 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
? 匹配前一个字符0次或1次
+ 匹配前一个字符1次或多次
表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
位置锚定
^ 匹配行首,如^hello匹配以hello开头的行
$ 匹配行尾,如$:空白行,[:space:]*$:空(白)行
\< 或 \b 匹配词首
\> 或 \b 匹配词尾
\<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
分组与引用
(模式) 将1个或多个字符当作一个整体处理,支持模式
\n 第n组括号之间的模式(即分组)所匹配到的字符
a b