正则表达式
regular expressions start
正则表达式-介绍
通配符的增强版
他所作的事情是帮你匹配指定规则的字符串
正则表达式-工具
正则在线测试:https://regex101.com/ (推荐)
VS Code:点选搜索框右侧按钮(本地)
正则表达式-限定符
“?” {前面字符出现0次或1次}
如:used? 可以匹配use/used
“*” {匹配0个或多个前面字符}
如:ab*c 可以匹配ac/abc/abbbc 等
“+” {匹配出现1次及以上字符}
如:ab+c 可以匹配abc/abbbc 等
“{…}” {精确匹配指定出现次数的字符}
如:ab{2}c 指定字符b出现2次,可以匹配abbc ,
ab{2,4}c 指定字符b出现2-4次之间(含),可以匹配abbbc,
ab{2, }c 指定字符b出现2次以上,可以匹配abbbc
需要限定多个对象:
“()” {将()内整体作为一个对象}
如:(ab){2}c 指定字符ab出现2次,可以匹配ababc ,
正则表达式-或运算
“ | ” {匹配左侧或右侧字符}
如:a_(cat|dog) 可以匹配a_cat/a_dog
正则表达式-字符类
“ [ ] ” {匹配的字符只能取自于[ ]内} 仅由[ ] 内字符构成的字符
如:[abc]+ 可以匹配abc_ abbbbc acccb
[ a-z ] 所有小写字母 [ 0 -9 ] 所有数字 [ a-zA-Z0-9]所有字母和数字
[ ^0-9 ] 所有非数字字符(含换行)
正则表达式-元字符
正则预先定义好的一些常用字符类型,如数字、空白、单词开头、结尾
谓之“元字符”
以“\”开头
“\d” {数字字符} 等同于[0-9] 如:\d+
“\w” {单词字符} 单词字符(英文、数字、下划线),即所有英文字符
“\s” {空白符} 包含换行和Tab 如:\s+
“\D” {非数字字符} 等同于[^0-9] 如:\D+
“\W” {非“单词”字符} 非英文字符 如:\W+
“\S” {非空白字符}
“.” {任意字符} 不含换行 如:.* 即除了换行的所有字符
两个特殊:
“^” {匹配行首} 如:^a 匹配行首的a
“$” {匹配行尾} 如:$a 匹配行尾的a
正则表达式-贪婪与懒惰匹配
贪婪匹配:尽可能多的匹配出结果,按最大范围匹配,反之懒惰匹配
如:
待匹配字符:<span><b>This is a test</b></span>
“ <.+>” :结果:全部匹配
“ <.+?>” :结果:仅蓝色部分
“?” 可以使贪婪匹配 变为 懒惰匹配
正则表达式-实例1:RGB颜色值匹配
十六进制RGB值
如:#000000 #ffffff
规律:
取值a-fA-f0-9
上述值出现6次
\b 标识边界,防止如#ffffffffffff 不符合要求的被识别
#[a-fA-f0-9]{6}\b
正则表达式-实例2:Ipv4地址匹配
如:
192.168.0,1 (合法)
This is a string (不合法)
123.123.123 (不合法)
256.1.1.1 (不合法)
规律:
1、由四段数字构成,由“.” 隔开
2、每段0~255,
注意这里是数字字符,不是数字
第一位0或1,后两位是任意数字 [01]\d\d
第一位2,第二位0-4,第三位任意 2[0-5]\d
前两位25,第三位0-5 25[0-5]
每段可以是1位或2位 \d?\d 可合并到 [01]?\d?\d
3、前后边界匹配
\b((25[0-5] | 2[0-5]\d | [01]\d\d\)\.){3}((25[0-5] | 2[0-5]\d | [01]\d\d\)\b
正则表达式-小结
视频:https://www.bilibili.com/video/BV12J411m7MG?from=search&seid=488807520486206024
笔记pdf:https://gitee.com/ikunsdc/regular-expressions-start