1.不区分大小写的匹配
(?i)ascii
还有开关:
abc(?i)def(?-i)hij
(?i)和(?-i)之间的不区分大小写,适用于Java,不适用于Python
2.块转义
\Q %^&*%* \E
3.匹配开头结尾
开头:^abc 或者 \Aabc
结尾:abc$ 或者 abc\Z
可以用\A\Z匹配空串
4.词边界
\bcat\b \Bcat\B
5.捕获分组和非捕获分组
捕获:(abc)
非捕获:(?;abc)
6.反向引用:
匹配先前捕获到的文本,用\1代表第一个捕获组里的内容。例:
2008-08-08,2010-10-10
\b\d\d(\d\d)-\1-\1
7.命名捕获组
2002-2-2
\b(?<year>[0-9]{4}) Java
\b\d\d(?P<magic>\d\d)-(?P=magic)-(?P=magic)\b Python
不要混合使用命名捕获和编号捕获
8.懒惰
量词后+问号
*?、 +?、??、{7,42}?