正则表达式

正则表达式就是根据特点的字符和表达式文件内容的匹配

因为通配符和正则表达式的表达式有很多相同但是用法不同,所以这里阐述一下区别

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

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

?:匹配任意一个字符

[ ]:可以是范围匹配也可以是单个字符正则表达式_第1张图片

以上是通配符的一系列表达式

正则表达式元字符

.:匹配任意单个字符,可以是一个汉字

转义符:\

正则表达式_第2张图片

单个 . 就是匹配多个字符,加上\,经过转义,' \ .' 就是改变了原来 . 的含义,就是一个单个的 . 进行匹配

():分组 

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

正则表达式_第3张图片

[a-z]

[A-Z]

[0-9]

使用正则表达式一定要把匹配内容引起来(" '')

[^a-z]:取反

[[:blank:]] 匹配空格或者制表符

正则表达式_第4张图片

红色为空格

[:space:] :空格 tab键 换行符 回车 各种类型的空白

[:cntrl:] 退格,删除

匹配内容可以写在一起

正则表达式_第5张图片

正则表达式中的基本表达式

*:匹配前面的字符任意次,包括0次,尽可能长的匹配

正则表达式_第6张图片

第一行匹配的是g,但是google的对应匹配项是go,不符合,所以无法匹配,转而后面匹配成功

第二行之所以能完全匹配成功因为*前面的匹配项和原文一致,所以可以完全匹配

.*:匹配前面的字符任意次,但是不包括0次,也就是匹配所有

正则表达式_第7张图片

.*不包括0,所以第一行没有o,则就不匹配

*和.*的区别:.*没有就是没有,没有就匹配失败(因为不包括0 ),*是即使没有也要匹配出来(因为包括0 )

\ +:匹配前面出现的字符,至少出现一次,也就是>=1

\?:匹配前面的字符出现0次,或者1次,有且只有一次

\ {n \ }:匹配前面出现的字符等于几次

多了少了都不行

\ {m,n \ }:匹配前面出现的字符,最少m次,最多n次

正则表达式_第8张图片

\ {,n \ }:匹配前面的字符最多就n次,没有也算

\ {n, \ }:匹配前面的字符最少N次,只要连续出现n次,后面都算

正则表达式_第9张图片

正则表达式匹配出ifconfig ens33中的IP地址

\.的作用就是转义符

位置锁定

^:行首锚定,以什么为开头

$:行尾锚定,以什么为结尾

^root$:匹配行,单独的一行只有root

^$:空白行

^[[:space:]]*$ 空白行

过滤/etc/fstab当中#开头的行正则表达式_第10张图片

第一个#是以【】开头

第二个#是取反

\ < 或者 \b 词首锚定 用于匹配单词模式的左侧

\ > 或者 \b 词尾锚定 用于匹配单词模式的右侧正则表达式_第11张图片

左边包含所有匹配,

右边包含匹配的一半

\broot\b:匹配整个单词

\ < root \ >

分组以及逻辑或

():分组

\ |:逻辑或正则表达式_第12张图片

ab不是连续出现,所以无法匹配

每个go都出现过一次

前面的go匹配一次和后面的gle

1或者2abc

grep -E 扩展正则表达式

|:表示逻辑或

egrep 也可以做扩展正则表达式

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