侧边栏壁纸
  • 累计撰写 23 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论
标签搜索

目 录CONTENT

文章目录

正则表达式

爱喝酸梅汤的小猫咪
2023-05-30 / 0 评论 / 0 点赞 / 413 阅读 / 768 字

正则表达式

正则的规则,三大宏观规则、两大微观规则

交集规则

类似于编程 "与" (A&B)
A是正则,B是正则,AB是交集正则,即表明,AB都要满足才可。

并集规则

类似于编程 "或" (A|B)
A是正则,B是正则,A|B是并集正则,即表明,A|B == [AB] 只要满足一个即可。

补集规则

类似于编程 "非" !A
A是正则 [^AB] 匹配不等于A或者等于B
A|B|[^C]D 匹配 等于A或等于B或者不能是C但要匹配D

单字节规则

数字:0|1|2|3|4|5|6|7|8|9 = [0-9] = \d 取反=\D
字母:[a-z] [a-zA-Z]=\a 取反=\A
[a-zA-Z0-9] = \w 取反=\W
空格、水平制表符、回车、换行 [ \t\r\n\v\f]=\s 取反=\S

重复多次展示
[0-9]{1,2} = \d{1,2} 正则1位或2位数字
[0-9][0-9] = [0-9]{2,2} = \d{2,2} = \d{2} 正则2位数字

符号
+:\d+ 正则至少出现1位数字
:ab 正则b出现多次或不出现
?:ab? 正则b出现1次或不出现

贪心符号"?"
并非上面的?
<h1>this is a title</h1><p>this is content</p>
要求:匹配h1标签
<h1>.*?> 匹配<h1>this is a title</h1>

引用
数字1为前面括号的索引
<h1>this is a title</h1><h1>this is content</h2>
<(h1)>.*<[\/]\1> <h1>this is a title</h1>

环视

向前肯定环视
dooabc123dooabc
要求:只匹配第一个abc
正则:abc(?=123)

向前否定环视
dooabc123dooabc
要求:abc后面再没有abc,才匹配对应的abc,改文本,匹配的是最后一个abc
正则:abc(?!123)

后向肯定环视(后向即向左)
dooqwe123abc
要求:寻找123 ,并看向后有没有遇到qwe,遇到才算成功
正则(?>=qwe)123

后向否定环视
dooaaa123abc
要求:寻找123,并向后有没有qwe,没有遇到才成功
正则:(?<!qwe)123

使用环视:
查看单词是否有边界
正则:(?<=\W)(?=\w)|(?<=\w)(?=\W)
简写:\b
foo bar
正则:\bbar只会匹配 bar

开始符:(?<!.)(?=.) = ^
结束符:(?<=.)(?!.) = $

例子

匹配,提取字符串 Pushing testchart-0.2.0.tgz to 135884-ijx_uat...\nDone.\n
正则:Pushing\s+(.?)-(.?).tgz\s+to\s+(.*?).

const s = Pushing testchart-0.2.0.tgz to 135884-ijx_uat...\nDone.\n
/Pushing\s+(.*?)-(.*?).tgz\s+to\s+(.*?)\./.exec(s)
结果:
['Pushing testchart-0.2.0.tgz to 135884-ijx_uat.', 'testchart', '0.2.0', '135884-ijx_uat', index: 0, input: 'Pushing testchart-0.2.0.tgz to 135884-ijx_uat...\nDone.\n', groups: undefined]

匹配:开始和结尾必须是字符串或数字,中间有-或者. 并且不能连在一起,并且必须是数字或字母
正则^a-z0-9?(.a-z0-9?)*$

正则网站:
https://rubular.com/
http://tool.rbtree.cn/

0
  • 0

评论区