正则表达式

文本三剑客:grep、sed、awk

正则表达式:由一类特殊字符以及文本字符所编写的一种模式,处理文本当中的内容。其中的一些字符不表示字符的字面含义,表示控制或者通配的功能

通配符和正则的区别:

二者本质上的区别就是通配符对命令进行限制,正则表达式是对文本内容进行限制

正则表达式_第1张图片

通配符:匹配文件名和目录名,不能匹配文件的内容

*:匹配任意一个或者多个字符

?:匹配任意一个单个字符

[ ] :匹配范围之内的任意单个字符

正则表达式:命令结果和文本内容都可以进行匹配

正则表达式的类型:

1.基本正则表达式

2.扩展正则表达式

二者的区别仅限于写法上的区别,其他的没有任何不同

基本正则:

字符匹配,元字符:

. :表示匹配任意的单个字符

( ):表示分组的意思

[ ]:表示匹配指定范围内的任意单个字符;[^] 取反,表示范围之外的

[[:space:]] 表示包含空格,tab键也算,换行的空格,回车的空格;[[:blank:]] 表示空白字符(空格和tab键(制表符))

\ :转义符,让字符变成原本的意思;例:\ . 这时 . 就不表示任意单个字符就表示点; \ ( \ ) 这时 ( )就不表示分组就表示括号

" " :避免发生歧义必须加上,例题:如图,第一个 . 应该表示任意字符,出来结果为abc;但是第二个 . 应该只表示点显示结果应该为 a.c所以发生歧义。后加上" "结果才为正确

正则表达式_第2张图片

次数的表达式:

*:表示匹配前面的字符任意次,0次也行,无数次也行,换言之有多少匹配多少,没有也行。简称:贪婪模式

正则表达式_第3张图片

.*:匹配任意长度的字符,但是至少要有一次,不包括0次

\?:匹配前面的字符0次或者1次,表示可有可无

正则表达式_第4张图片

\ +:匹配前面的字符至少1次

\ {n\ }:匹配前面的字符n次,简称=n次;注意:匹配的前面的字符必须是连续出现的

\ {m,n\ }:匹配前面的字符,最少m次,最多n次,简称m到n次之间

\ {,n\ }:匹配前面的字符,最多n次,简称小于等于n次

正则表达式_第5张图片

\ {n,\ }:匹配前面的字符,最少n次,简称大于等于n次

正则表达式_第6张图片

位置锚定:

^:以什么为开头,在模式的左侧,例:^r 以r为开头

$:以什么为结尾,在模式的右侧,例:r$ 以r为结尾

^r$:匹配整行,多一个字少一个字都不行,例:^root$ 只匹配root多一个字少一个字都不行

^$:匹配空行,只有空行才能匹配,空格都不行,另一种写法:^[[:space:]]$

词首锚定:\ < 或者\b

词尾锚定:\ > 或者\b

通过\b的位置判断

\ 匹配整个单词

分组:

( )

\ |:表示逻辑或

扩展正则:

扩展正则和基本正则的功能一模一样只是少了烦人的 \

使用扩展正则必须加上 grep -E 或 egrep

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