前言
- 在实际开发过程中经常会有查找符合某些规则的字符串
- 比如:邮箱、图片地址、手机号码等。想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。
一、正则表达式是什么?
正则表达式并不是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 = 分组名) 使用指定分组的内容
总结