之前学过一遍正则表达式,结果好久不用基本上忘了,每次用都得重新打开网页搜索下;由于网上讲的参差不齐,还是自己总结下吧。
大家都推荐这本书: 精通正则表达式 第3版
1 特殊作用
大写往往代表对小写能匹配的字符取补集
[_a-zA-z0-9]: 中括号的作用——匹配中括号内任意一种(连字符-只有放在字符组开头时才不表示范围)(\d)): 小括号创建一个捕获分组,也可用来决定竖线的作用范围(?:the|The|THE): 非捕获分组,无法后向引用(效率高),解决使用小括号的副作用(?=pattern): 非捕获匹配,正向肯定查找;如Windows(?=95|98|NT|2000)能匹配Windows2000中的Windows;类似方向相反但作用相同的为(?<=pattern)(?!pattern); 非捕获匹配,正向否定查找;如Windows(?!95|98|NT|2000)能匹配Windows3.1中的Windows;类似方向相反但作用相同的为(?<!pattern)(?=...): 这一类表达式都可以看作一个“空位”,它们本身不占用字符(\d)\d\1: 其中\1表示引用前面分组中的内容,如该表达式可匹配707; 或者有时用$1这种形式也可\: 转义符, 如\(表示匹配左括号本身^: 行起始位置(或整个文档的开头);$: 行结束位置 (锚位符)$: 行或字符串的结尾位置;和^一样都不占用字符[^\d]: 当^放在中括号里时表示对该中括号里的匹配内容取反(匹配单个未列出的字符)|: 并集,多个选项中选择一个.如(the|The|THE)[a-z] [^m-r]: 交集,空格表示“且”,该式表示匹配a到z之间但不包含m到r间的字符.*?: 非贪婪匹配的一个组合形式,类似的?字符还可以跟在*,+,?,{n},{n,},{n,m}后表示非贪婪匹配
2 表示数量
\d{3}: 花括号为量词,数字表明出现几次,可以有多个选项如:\d{3,4},匹配3位或4位数字*: 量词,出现次数大于等于0(贪婪) 相当于{0,}+: 量词,出现次数大于等于1 相当于{1,}?: 量词,0个或1个(懒惰) 相当于{0,1}
3 数字
[0-9]: 匹配单个数字, 相当于\d[01357]: 匹配列出的数字中的一个\D: 匹配一个非数字字符
4 其他
.: 匹配任意字符,但好像有的版本没把换行符算进去,这时可用(.|\n)表示任意字符\w: 匹配字母、数字和下划线\s: 空白字符,一共四种,相当于[ \t\n\r];空格、制表符、换行符、回车符\b: 匹配单词边界,不消耗字符(零宽度断言),如\b\w{7}\b
5 正则表达式小工具Reg_Exper-Tester
自己结合别人的代码揉合的一个正则表达式测试以及可视化的工具,感觉还是挺有用的,比网上80%的正则表达式工具都要好吧,不然就不需要我重新做一个了。
Demo: < https://chengpengzhao.com/Reg_Exper-Tester/ >