正则表达式
REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符) 不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配 符功能是用来处理文件名,而正则表达式是处理文本内容中字符
正则表达式分为两类
基本正则表达式
扩展正则表达式
1、基本正则表达式元字符
1.1字符匹配
常用 . 匹配任意单个字符,可以是一个汉字 [] 匹配指定范围内的任意单个字符,示例:[abcd] [0-9] [a-z] [a-zA-Z] [^] 匹配指定范围外的任意单个字符,示例:[^abcd] [:alnum:] 字母和数字 [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z] [:upper:] 大写字母 [:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围 广 拓展 [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) [:digit:] 十进制数字 [:xdigit:]十六进制数字 [:graph:] 可打印的非空白字符 [:print:] 可打印字符 [:punct:] 标点符号 [:blank:] 空白字符(空格和制表符)
\w #匹配单词构成部分,等价于[_[:alnum:]] \W #匹配非单词构成部分,等价于[^_[:alnum:]] \S #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符
1.2匹配次数
用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配 .* #任意长度的任意字符 \? #匹配其前面的字符出现0次或1次,即:可有可无 \+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次 \{n\} #匹配前面的字符n次 \{m,n\} #匹配前面的字符至少m次,至多n次 \{,n\} #匹配前面的字符至多n次,<=n \{n,\} #匹配前面的字符至少n次
1.3位置锚定
位置锚定可以用于定位出现的位置
^ #行首锚定, 用于模式的最左侧 $ #行尾锚定,用于模式的最右侧 ^PATTERN$ #用于模式匹配整行 ^$ #空行 ^[[:space:]]*$ #空白行 \< 或 \b #词首锚定,用于单词模式的左侧 \> 或 \b #词尾锚定,用于单词模式的右侧 \<PATTERN\> #匹配整个单词 #注意: 单词是由字母,数字,下划线组成
1.4分组其他
\(string1\(string2\)\) \1 :string1\(string2\) \2 :string2 a\|b #a或b C\|cat #C或cat \(C\|c\)at #Cat或cat
2、扩展正则表达式原子符
2.1字符匹配
. 任意单个字符 [abcd] 指定范围的字符 [^abcd] 不在指定范围的字符 [:alnum:] 字母和数字 [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z] [:upper:] 大写字母 [:blank:] 空白字符(空格和制表符) [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广) [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) [:digit:] 十进制数字 [:xdigit:] 十六进制数字 [:graph:] 可打印的非空白字符 [:print:] 可打印字符 [:punct:] 标点符号
2.2次数匹配
* 匹配前面字符任意次 ? 0或1次 + 1次或多次 {n} 匹配n次 {m,n} 至少m,至多n次
2.3位置锚定
^ 行首 $ 行尾 \<, \b 语首 \>, \b 语尾
2.4
分组其他
() 分组 后向引用:\1, \2, ... | 或者 a|b #a或b C|cat #C或cat (C|c)at #Cat或cat
grep -E 配合扩展正则表达式使用,对文本内容过滤筛选显示
[15:19:09 root@centos8 ~]#ifconfig ens160 | grep netmask | grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | head -n1
192.168.1.85
[15:19:20 root@centos8 ~]#