切换主题
正则表达式
Python中使用re
模块来处理正则表达式。
元字符
1)元字符
元字符 | 匹配内容 |
---|---|
. | 匹配任意字符,除了换行符 |
\w | 匹配非单词字符 |
\s | 匹配空白字符,包括空格、制表符、换页符等 |
\d | 匹配数字字符 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的边界 |
\W | 匹配非单词字符 |
\S | 匹配非空白字符 |
\D | 匹配非数字字符 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
a|b | 匹配a或b |
[...] | 匹配 [...] 中的字符 |
[^...] | 匹配不在 [...] 中的字符 |
() | 分组使用,匹配括号中的内容 |
2)量词
量词 | 解释 |
---|---|
* | 匹配0个或多个前面的那一项 |
+ | 匹配1个或多个前面的那一项 |
? | 匹配0个或1个前面的那一项 |
{n} | 匹配重复 n 个前面的那一项 |
{n,} | 匹配至少 n 个前面的那一项 |
{n,m} | 匹配 n 到 m 个前面的那一项 |
- 字符组
有时也会出现各种字符组成的字符组,这在正则表达式中使用[]表示,如下所示:
字符组 | 解释 |
---|---|
[0-9] | 匹配数字字符 |
[a-z] | 匹配小写字母 |
[A-Z] | 匹配大写字母 |
[a-zA-Z] | 匹配大小写字母 |
[a-zA-Z0-9] | 匹配大小写字母和数字字符 |
[0-9a-fA-F] | 用来验证16位十六进制数 |
4)修饰符
修饰符 | 解释 |
---|---|
i | 使匹配对大小写不敏感 |
L | 使匹配对 Unicode 字符集不敏感 |
m | 多行匹配,影响 ^ 和 $ |
s | 使 . 匹配包括换行在内的所有字符 |
x | 忽略空白字符和 # 开始的注释 |
g | 全局匹配,查找所有匹配的字符串,而不仅仅是第一个 |
贪婪和非贪婪
正则表达式默认为贪婪匹配,也就是尽可能多的向后匹配字符,比如 {n,m} 表示匹配前面的内容出现 n 到 m 次(n 小于 m),在贪婪模式下,首先以匹配 m 次为目标,而在非贪婪模式是尽可能少的向后匹配内容,也就是说匹配 n 次即可。
贪婪模式转换为非贪婪模式的方法很简单,在元字符后添加“?”即可实现,如下所示:
贪婪模式 | 非贪婪模式 |
---|---|
* | *? |
+ | +? |
? | ?? |
{n} | {n}? |
{n,} | {n,}? |
{n,m} | {n,m}? |
转义
在正则表达式中,如果要匹配元字符,需要使用转义字符,比如要匹配一个圆点,需要使用\.
,因为圆点是元字符。
常见转义字符:* + ? ^ $ [] () {} | \ .