正则表达式学习笔记

之前学过一遍正则表达式,结果好久不用基本上忘了,每次用都得重新打开网页搜索下;由于网上讲的参差不齐,还是自己总结下吧。
大家都推荐这本书: 精通正则表达式 第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/ >

Author: zcp
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source zcp !
评论
 Previous
入坑WSL(Windows Subsystem for Linux)
在笔记本上装Ubuntu用了几个月之后,由于一些软件只能在windows下运行,来回切换系统也挺麻烦的,故决定安装个WSL(Windows Subsystem for Linux)试试。意外感觉用起来挺舒服的;一是平常需求也不多,就用下Sh
Next 
Git学习笔记
1 git学习笔记学习自:廖雪峰的官方网站 1.1 基础 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地
  TOC