前言
- 在实际开发过程中经常会有查找符合某些规则的字符串
- 比如:邮箱、图片地址、手机号码等。想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。
一、正则表达式是什么?
正则表达式并不是Python所特有的,在Java、PHP、Go以及JavaScript等语言中都是支持正则表达式的。
二、使用模块 re
import re
result = re.match(pattern正则表达式, string要匹配的字符串, flags=0)
result.group()
三、re 模块中的代码图示
3.1 re模块匹配单个字符
代码 | 功能 |
---|
. | 匹配任意1个字符(除了\n) |
[ ] | 匹配 [ ] 中列举的字符 |
[^指定字符] | 匹配除了指定字符以外的所有字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即 空格,tab键 |
\S | 匹配非空白 |
\w | 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字 |
\W | 匹配特殊字符,即非字母、非数字、非汉字 |
3.2 re模块匹配多个字符
代码 | 功能 |
---|
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少有1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{n} | 恰好n次, 多一次少一次都不行. |
{n, } | 至少n次, 至多无所谓 |
{n,m} | 至少 n 次, 至多 m 次, 包括 n 和 m |
3.3 re模块匹配开头跟结尾
3.4 re模块匹配分组
代码 | 功能 |
---|
| | 匹配左右任意一个表达式 |
(ab) | 将括号中字符作为一个分组 |
\num | 引用分组num匹配到的字符串 |
3.5 扩展:
- (?P <分组名>) 给分组起名字
- (?P = 分组名) 使用指定分组的内容
总结