每日学习之正则表达式(二)

书接上篇:《每日学习之正则表达式(一)》:https://www.cnblogs.com/OM-dyc/p/18968118

元字符
6. ? 字符

? 表示标记在符号前面的字符可选,出现0或1次
若输入[D]?yc,则会匹配Dyc和yc
微信截图_20250707133417

7.{}字符
{}用来限定一个或者一组字符可以重复出现的次数
比如[a-z]{2,3}表示匹配最少2位最多3位小写字母,并且匹配从左往右依次进行,以及在一组匹配中的字符,不能再加入下一组字符匹配
微信截图_20250707144243
在该示例中,best的前三个字符bes已经符合规则,则t单独一个字符不符合匹配规则,他不能再跟est组成一组匹配

若输入[a-z]{2,},则表示匹配至少两位小写字母
微信截图_20250707145413

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

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

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

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

11.^和$字符
这里的字符虽然和前面的否定字符是同一个,但是他们的作用和用法却是不同的,这里的和$起锚点作用,^表示开头,而$表示结尾
若直接输入dyc
微信截图_20250707154252
若输入dyc,则只会匹配开头是dyc的字符,要求匹配必须发生在字符串开头
微信截图_20250707154352
若不是字符串开头,则无匹配
微信截图_20250707155043
若输入dyc$,则匹配结尾的dyc字符,$要求匹配必须发生在字符串的末尾
微信截图_20250707154846
若不是字符串结尾,则无匹配
微信截图_20250707154907

12.简写字符集
在上面这些元字符之外,还存在一些常用的字符集简写
(1). 匹配除换行符之外的所有字符
微信截图_20250707155257
(2)\w 匹配所有的字母数字
微信截图_20250707155559
(3)\W 匹配除字母数字外的所有字符(包括空格)
微信截图_20250707155742
(4)\d 匹配数字
微信截图_20250707155842
(5)\D 匹配所有非数字字符
微信截图_20250707155852
(6)\s 匹配所有空格字符
微信截图_20250707160000
(7)\S 匹配所有非空格字符
微信截图_20250707160011
(8)\n 匹配换行符
微信截图_20250707160501

以下几项在网页上不便看到效果,就简单介绍一下

(9)\f 匹配换页符
(10)\r 匹配回车符
(11)\t 匹配制表符
(12)\v 匹配垂直制表符
(13)\p 匹配CR/LF,用来匹配DOS行终止符

13.零宽度断言
零宽度断言就是增加判断但是不计入匹配结果的表达式,总共分为四类,正先行断言——存在 :?=、负先行断言——排除:?!、正后发断言——存在:?<=、负后发断言——排除:?<!

正先行断言:即在第一部分正则表达式之后必须跟着?=定义的规则的表达式
比如[d|D]yc(?=\sis),会匹配dyc或者Dyc后面跟着空格+is的字符
微信截图_20250707165748

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

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

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

14.标志
(1)i:忽略大小写
(2)g:全局搜索
(3)m:多行修饰符,锚点^$的工作范围在每行的起始

在提供的练习网站(第一篇文章结尾)中,调整的位置在此处
微信截图_20250707172604

好了,正则表达式的学习就到这里了,正则表达式非常重要,他是我们学习shell的基础,一定要在练习网站上多练多学

我们下期shell学习再见,byebye~

posted @ 2025-07-07 17:28  努力成为OM大师  阅读(18)  评论(0)    收藏  举报