Regular Expressions
注意版本和文档!
常用工具
https://regex101.com/ https://regexr.com/ python re模块
字符
.
匹配任意一个字符
[]
匹配括号中的任意一个字符,如 [a-zA-Z1-3]
匹配大写字母或小写字母或数字1-3, [^]
匹配除了括号中的字符
预定字符类
\d
匹配数字
\D
匹配非数字
\w
匹配字母、数字或下划线
\W
匹配非字母、数字或下划线
\s
匹配空白字符或者tab
\S
匹配非空白字符
边界匹配
^
匹配字符串的开头
$
匹配字符串的结尾
\b
匹配单词的边界, 如 \bthe\b
匹配the
\B
匹配非单词边界
数量词
*
匹配前面的字符0次或多次
+
匹配前面的字符1次或多次
?
匹配前面的字符0次或1次
{n}
匹配前面的字符n次
{n,}
匹配前面的字符至少n次
{n,m}
匹配前面的字符至少n次, 至多m次
非贪婪匹配
量词默认是贪婪匹配, 即尽可能多的匹配字符, 如 a.*b
会匹配到最长的以a开头的b
后面的量词加上?
则为非贪婪匹配, 即尽可能少的匹配字符, 如 a.*?b
会匹配到最短的以a开头的b
分组与捕获
()
用来创建分组, 捕获括号中的字符, 并在匹配时返回匹配到的内容
[]
用来创建字符类, 如 [Pp]
匹配P或p
|
用来创建或关系, 如 a(bc|de)
匹配a后面是bc或de
\n
引用分组, 如 \1
引用第一个分组
$n
引用第n个分组
?:
非捕获分组, 如 (?:abc)
匹配abc, 不捕获匹配到的内容
前瞻和后顾
- 正向前瞻
(?=abc)
匹配abc前面的字符 - 反向前瞻
(?!abc)
匹配abc前面的字符 - 正向后顾
(?<=abc)
匹配abc后面的字符 - 反向后顾
(?<!abc)
匹配abc后面的字符