bash编程-正则表达式

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

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

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

正则表达式元字符

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

1.基本正则表达式元字符

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

2.扩展正则表达式元字符

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

你可能感兴趣的:(bash编程-正则表达式)