十七、正则表达式

一、正则表达式,通过正则表达式提供的特殊字符生成一个匹配字符串的公式,从海量的数据中筛选出需要的数据

常见的命令只有grep、sed、awk支持正则表达式

二、特殊字符:

 ^    :锚定开头 ^a 以a开头,默认锚定一个字符

 $   :锚定结尾 a$ 以a结尾,默认锚定一个字符

技巧:单一使用 ,锚定开头或结尾,是模糊匹配;两者一起使用,属于精确匹配。

egrep "^a" file     以a开头的字符串
egrep "a$" file      以a结尾的字符串
egrep "^ac$ " file     以a开头c结尾,两个字符

 .  :匹配除回车以外的任意字符

() :字符串分组

[] :定义字符类,匹配括号内的一个字符

[ ^ ] :否定括号内出现的字符类,取反

\ :转义字符

 三、限定符

对前面的字符或字符串做限定说明

* :某个字符后面出现星号,代表该字符可以不出现或者出现多次

?:某个字符后面出现问号,代表该字符可以不出现或者出现一次

+:某个字符后面出现加号,代表该字符可以出现一次或者出现多次,至少出现一次

{n,m}:某个字符后面出现,代表该字符最少出现 n 次,最多出现 m 次

{m}:正好出现 m 次

四、POSIX字符

使用POSIX字符类时,必须以  [[ 开头 ,以 ]]  结束。其中,内层的 [ ] 是字符类本身的部分(例如:[:lapha:]),外层的 [ ] 匹配符用来定义一个字符类,匹配括号内的一个字符

字符类        说明
[:alnum:]    任何一个字母或数字(等价于[a-zA-Z0-9])
[:alpha:]    任何一个字母(等价于[a-zA-Z])
[:blank:]    空格或制表符(等价于[\t ])
[:cntrl:]    ASCII控制字符(ASCII0到31,再加上ASCII127)
[:digit:]    任何一个数字(等价于[0-9])
[:print:]    任何一个可打印字符
[:graph:]    和[:print:]一样,但不包括空格
[:lower:]    任何一个小写字母(等价于[a-z])
[:upper:]    任何一个大写字母(等价于[A-Z])
[:punct:]    既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符
[:space:]    任何一个空白字符,包括空格(等价于[\f\n\r\t\v ])
[:xdigit:]    任何一个十六进制数值(等价于[a-fA-F0-9])

一个字符类是一个字符

posted @ 2025-11-18 09:12  chao_xiong  阅读(9)  评论(0)    收藏  举报