每日学习之正则表达式(二)
书接上篇:《每日学习之正则表达式(一)》:https://www.cnblogs.com/OM-dyc/p/18968118
元字符
6. ? 字符
? 表示标记在符号前面的字符可选,出现0或1次
若输入[D]?yc,则会匹配Dyc和yc

7.{}字符
{}用来限定一个或者一组字符可以重复出现的次数
比如[a-z]{2,3}表示匹配最少2位最多3位小写字母,并且匹配从左往右依次进行,以及在一组匹配中的字符,不能再加入下一组字符匹配

在该示例中,best的前三个字符bes已经符合规则,则t单独一个字符不符合匹配规则,他不能再跟est组成一组匹配
若输入[a-z]{2,},则表示匹配至少两位小写字母

若输入[a-z]{2},则表示匹配固定两位的小写字母的字符

8.()字符
和数学中()的作用相同,把括号中的字符看作一个整体
即输入(yc)表示匹配0或多个yc

而输入yc表示匹配0或多个c

9.|字符
或运算符,用作判断条件
若输入(D|d)yc|d

10.\字符
反斜线\表示转码特殊字符,若我们想匹配.?这种字符,我们就需要在前面加上\来进行转码
例如(D|Y)yc(.|?),就表示匹配后面跟着.或者?的Dyc,Yyc

11.^和$字符
这里的字符虽然和前面的否定字符是同一个,但是他们的作用和用法却是不同的,这里的和$起锚点作用,^表示开头,而$表示结尾
若直接输入dyc

若输入dyc,则只会匹配开头是dyc的字符,要求匹配必须发生在字符串开头

若不是字符串开头,则无匹配

若输入dyc$,则匹配结尾的dyc字符,$要求匹配必须发生在字符串的末尾

若不是字符串结尾,则无匹配

12.简写字符集
在上面这些元字符之外,还存在一些常用的字符集简写
(1). 匹配除换行符之外的所有字符

(2)\w 匹配所有的字母数字

(3)\W 匹配除字母数字外的所有字符(包括空格)

(4)\d 匹配数字

(5)\D 匹配所有非数字字符

(6)\s 匹配所有空格字符

(7)\S 匹配所有非空格字符

(8)\n 匹配换行符

以下几项在网页上不便看到效果,就简单介绍一下
(9)\f 匹配换页符
(10)\r 匹配回车符
(11)\t 匹配制表符
(12)\v 匹配垂直制表符
(13)\p 匹配CR/LF,用来匹配DOS行终止符
13.零宽度断言
零宽度断言就是增加判断但是不计入匹配结果的表达式,总共分为四类,正先行断言——存在 :?=、负先行断言——排除:?!、正后发断言——存在:?<=、负后发断言——排除:?<!
正先行断言:即在第一部分正则表达式之后必须跟着?=定义的规则的表达式
比如[d|D]yc(?=\sis),会匹配dyc或者Dyc后面跟着空格+is的字符

负先行断言:用于匹配后面不跟者规定规则的字符,即正先行断言的反例
比如[d|D]yc(?!\sis),会匹配dyc或者Dyc后面不跟着空格+is的字符

正后发断言:作用与正先行断言相同,唯一的区别就是变成了在匹配结果前面增加规则
比如(?<=dyc\s)is,就是匹配前面有dyc 的is

负后发断言:作用与负先行断言相同,唯一的区别就是变成了在匹配结果前面增加规则
比如(?<!dyc\s)is就是匹配前面没有dyc 的is

14.标志
(1)i:忽略大小写
(2)g:全局搜索
(3)m:多行修饰符,锚点^$的工作范围在每行的起始
在提供的练习网站(第一篇文章结尾)中,调整的位置在此处

好了,正则表达式的学习就到这里了,正则表达式非常重要,他是我们学习shell的基础,一定要在练习网站上多练多学
我们下期shell学习再见,byebye~
浙公网安备 33010602011771号