正则表达式就是根据特点的字符和表达式对文件内容的匹配
因为通配符和正则表达式的表达式有很多相同但是用法不同,所以这里阐述一下区别
*:匹配任意一个或者多个字符
?:匹配任意一个字符
[ ]:可以是范围匹配也可以是单个字符
以上是通配符的一系列表达式
.:匹配任意单个字符,可以是一个汉字
转义符:\
单个 . 就是匹配多个字符,加上\,经过转义,' \ .' 就是改变了原来 . 的含义,就是一个单个的 . 进行匹配
():分组
[ ]:匹配任意范围内的单个字符
[a-z]
[A-Z]
[0-9]
使用正则表达式一定要把匹配内容引起来(" '')
[^a-z]:取反
[[:blank:]] 匹配空格或者制表符
红色为空格
[:space:] :空格 tab键 换行符 回车 各种类型的空白
[:cntrl:] 退格,删除
匹配内容可以写在一起
*:匹配前面的字符任意次,包括0次,尽可能长的匹配
第一行匹配的是g,但是google的对应匹配项是go,不符合,所以无法匹配,转而后面匹配成功
第二行之所以能完全匹配成功因为*前面的匹配项和原文一致,所以可以完全匹配
.*:匹配前面的字符任意次,但是不包括0次,也就是匹配所有
.*不包括0,所以第一行没有o,则就不匹配
*和.*的区别:.*没有就是没有,没有就匹配失败(因为不包括0 ),*是即使没有也要匹配出来(因为包括0 )
\ +:匹配前面出现的字符,至少出现一次,也就是>=1
\?:匹配前面的字符出现0次,或者1次,有且只有一次
\ {n \ }:匹配前面出现的字符等于几次
多了少了都不行
\ {m,n \ }:匹配前面出现的字符,最少m次,最多n次
\ {,n \ }:匹配前面的字符最多就n次,没有也算
\ {n, \ }:匹配前面的字符最少N次,只要连续出现n次,后面都算
正则表达式匹配出ifconfig ens33中的IP地址
\.的作用就是转义符
位置锁定
^:行首锚定,以什么为开头
$:行尾锚定,以什么为结尾
^root$:匹配行,单独的一行只有root
^$:空白行
^[[:space:]]*$ 空白行
过滤/etc/fstab当中#开头的行
第一个#是以【】开头
第二个#是取反
\ < 或者 \b 词首锚定 用于匹配单词模式的左侧
\ > 或者 \b 词尾锚定 用于匹配单词模式的右侧
左边包含所有匹配,
右边包含匹配的一半
\broot\b:匹配整个单词
\ < root \ >
分组以及逻辑或
():分组
\ |:逻辑或
ab不是连续出现,所以无法匹配
每个go都出现过一次
前面的go匹配一次和后面的gle
1或者2abc
grep -E 扩展正则表达式
|:表示逻辑或
egrep 也可以做扩展正则表达式

