在python中定义规则(正则表达式),要导入re模块。
import re
match、r和\:
一、匹配单个字符
字符 | 功能 |
---|
. | 匹配任意一个字符,除\n |
[] | 匹配[]中列举的字符 |
/d | 匹配数字0-9 |
/D | 匹配非数字 [^0-9] |
/w | 匹配数字(0-9)、字母(a-z和A-Z)、下划线(_) |
/W | 匹配 非 数字(0-9)、字母(a-z和A-Z)、下划线(_) [^\w] |
/s | 匹配空格、tab键 |
/S | 匹配非空格、tab键 [^\s] |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3a46bc934f0434ade9adc894c0c189f7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/62bc603a020478dd75245ff91e1878cb.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c87fdbe656ffdf67787767f0c63feb82.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a11e77065efbc029db9f17a168e50154.png)
二、匹配多个字符
字符 | 功能 |
---|
* | 匹配前一个字符出现无数次或没出现 |
+ | 匹配前一个字符至少出现1次或无数次 |
? | 匹配前一个字符出现1次或0次 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现m到n次 |
三、匹配头和尾
字符 | 功能 |
---|
^ | 匹配字符串开头,多行匹配每一行开头 |
$ | 匹配字符串末尾,多行匹配每一行末尾 |
四、匹配分组
字符 | 功能 |
---|
| | 匹配左右任意一个表达式(书写时|左右不留空格) |
() | 将括号中的字符作为一个分组 |
\num | 引用分组num匹配字符串 |
(?P) | 给分组起别名 |
(?P=name) | 引用别名为name分组匹配的规则 |
五、python中re模块的高级用法
方法 | 功能 |
---|
search | 不用从头开始匹配 |
findall | 统计满足规则的全部信息------------>返回的是一个列表 |
sub | 将匹配到的数据进行替换(数据清洗) |
六、贪婪与非贪婪
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*“如果用于查找"abbbc”,将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。