shell脚本之正则表达式

1. 正则表达式的介绍

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。正则表达式被很多程序和开发语言所广泛支持。

2. 正则表达式和通配符的区别

 通配符:在Linux中,一般配合find命令用于对文件目录,文件名的查找

正则表达式:匹配文件内容,用于精确筛选信息,可以配合grep,egrep,awk,sed命令进行搭配使用,查找时,也比通配符更加精确。

3.  基础正则表达式常见元字符

正则表达式的功能及类别:

1. 代表字符

2.表示次数

3.位置锚定

4. 分组或其他


\  转义,把一些特殊的符号转换成普通的符号字符,还可以把一些普通字符转换成特殊功能,例:\!、\n、\$等

^ 表示匹配字符串开始的位置,匹配行首,例: ^a、 ^#
$ 表示匹配字符串末尾的位置,匹配行尾,例: word$、 #$ ;^$表示空行
. 匹配任意的单个字符,例: go.d、g..d
*    匹配前面子表达式0次或者多次,贪婪模式所以尽可能长,例: goo*d、go.*d
.*    表示任意长度的任一字符,不包括0次
\?    
匹配其前面字符0或1次,可有可无

\+    匹配其前面字符最少1次,有且大于等于1次
\{n\}   匹配前面的子表达式n次,例:mo\{2\}y、'[0-9]\{ 2\ }'匹配两位及两位以上数字
\{n,\}    匹配前面的子表达式不少于n次,例: mo\{2,\}y、'[0-9]\{2,\}'匹配两位及两位以上数字
\{,n\}    匹配前面的子表达式不多于n次
\{n,m\}    匹配前面的子表达式n到m次(m>=n),例: mo\{2,3\}y、'[0-9]\{2,3\}'匹配两位到三位数字
注: egrep(grep-E)、awk使用{n }、{n, }、{n,m}匹配时"{}”前不用加"\"
\w    匹配包括下划线的任何单词字符
\W    匹配任何非单词字符。等价于"[^A-Za-z0-9_]"。
\d    匹配一个数字字符
\D    匹配一个非数字字符。等价于[^0-9]。
\s    空白符
[:alpha:]    字母,即A-Z,a-z
[:alnum:]    字母和数字
[:lower:]    小写字母,即a-z
[:upper:]    大写字母,即A-Z
[:blank:]    空白字符(空格和制表符)
[:space:]    包括空格、制表符、换行符、回车符等各类型空白
[:print:]    可打印字符
[:punct:]    标点符号

[ ] 表示过滤单个字符

shell脚本之正则表达式_第1张图片

^   表示匹配字符串开始的位置,匹配行首

$   表示匹配字符串末尾的位置,匹配行尾

shell脚本之正则表达式_第2张图片

*  匹配前面子表达式0次或者多次。

shell脚本之正则表达式_第3张图片

  • \{n\}  匹配前面的子表达式n次

  • .*  表示任意长度的任一字符,不包括0次

shell脚本之正则表达式_第4张图片

4. 拓展正则表达式

支持的工具: (egrep、awk、grep -E、sed -r)

字符 作用
+ 表示匹配前面的子表达式1次以上
? 表示匹配前面的子表达式0或者1次

( )

将括号里的内容看成一个整体
| 以或的方式匹配字符串

+   表示匹配前面的子表达式1次以上

shell脚本之正则表达式_第5张图片

?  表示匹配前面的子表达式0或者1次

  • ( )   将括号里的内容看成一个整体

  • |  以或的方式匹配字符串

shell脚本之正则表达式_第6张图片

你可能感兴趣的:(正则表达式)