python正则表达式
概述
-
为什么要学习正则表达式
在实际的开发过程中,经常会有查找符合某些规则的字符串,如邮箱、图片地址、电话号码等。想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。 -
什么是正则表达式
正则表达式描述了一种字符串匹配的模式,是一种特定的字符串模式,这个模式是通过一些特殊的符号组成的。 -
正则表达式的功能
- 数据验证(表单验证:如手机、邮箱、IP地址)
- 数据检索 (数据检索、数据抓取) => 爬虫功能
- 数据隐藏 (136****6221)
- 数据过滤 (论坛敏感关键字过滤)
re
模块
Python中需要通过正则表达式对字符串进行匹配时,可以使用re
模块
re
模块的使用
# 1. 导入re模块
import re
# 2. 使用match方法进行匹配操作
result = re.match(pattern正则表达式, string要匹配的字符串,flags=0)
# flags: 可选,表示匹配模式,比如忽略大小写,多行匹配等
# 3 如果匹配成功,使用group方法提取数据
result.group()
match
函数
match
函数从左往右,逐个字符的匹配,不会跳过某个字符,即 全词匹配
例:字符匹配
# 正则表达式 .it 表示 匹配 3个字符,第一个字符是任意字符,第二个字符是i,第三个字符是t
result = re.match('.it','ait')
# 判断是否匹配成功,匹配成功就打印匹配到的内容,没有匹配到就提示
if result != None:print(result.group()) # ait
else:print('匹配失败')
正则表达式符号
符号 | 说明 |
---|---|
. | 任意一个字符 |
\. | 取消 . 的特殊用法,就是一个普通的. |
a | 代表1个字符a |
[abc] | 表示a,b,c中的任意1个字符 |
[^abc] | 代表除了a,b,c以外的任意一个字符 |
[0-9] | 代表任意一个数字 |
\d | 代表任意一个数字 |
\D | 除了整数外的任意1个字符 \D = [^0-9] |
\s | 匹配空白,空格 tab |
\S | 匹配非空白 |
\w | 匹配非特殊字符 |
\W | 匹配特殊字符 |
? | 前面的内容出现0次或者1次,如 a? 表示 a 出现 1次 |
* | 前面的内容出现 0 ~ n 次 |
+ | 前面的内容出现 1 ~ n 次 |
{m} | 匹配前一个字符出现m次 |
{m,} | 匹配前一个字符至少出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
| | 匹配左右任意一个表达式 |
(ab) | 将括号中字符作为一个分组 |
\num | 引用分组num匹配到字符串,如 \1 表示引用第1组的数据, \2 表示引用第2组的数据 |