定义
正则表达式(Regular Expression)是一种用来描述文本模式的工具
- 用于字符串的搜索、匹配、替换和提取等操作。
- 是由普通字符(例如字母、数字、标点符号等)和特殊字符(元字符)组成的字符串
- 通过字符的组合构建出复杂的匹配规则
模式
正则表达式就是为了找到符合某种模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束。
例1 - 固定的字符串
要求:确定字符串中是否有123456
import re # 引入正则表达式模块re
text = '身高:178,体重:168,学号:123456,密码:9527'
print(re.findall(r'123456', text))
# 使用re的findall()方法找到所有符合模式的字符串,这里的模式就是123456
# 也就是说找到字符串中所有的123456。
# 结果:['123456']
固定的字符串匹配,可以用传统的字符串匹配解决,比如用in运算符,也可以使用index函数
例2 - 某一类字符
要求:找出所有的单个的数字
import re
text = '身高:178,体重:168,学号:123456,密码:9527'
print(re.findall(r'\d', text))
# 表达式\d表示所有的数字,所以1,7,8,1,6,8等都可以匹配到
# 结果:['1', '7', '8', '1', '6', '8', '1', '2', '3', '4', '5', '6', '9', '5', '2', '7']
例3 - 重复某一类字符
要求:找所有的数字,比如178,168,123456,9527等。
text = '身高:178,体重:168,学号:123456,密码:9527'
print(re.findall(r'\d+', text))
# 这个模式\d+在\d的后面增加了+号,表示数字可以出现1到多次
# 结果:['178', '168', '123456', '9527']
例4 - 组合
要求:找出座机号码
text = 'A电话是18812345678,他还有一个电话号码是18887654321,他爱好的数字是01234567891,他的座机是:0571-52152166'
print(re.findall(r'\d{4}-\d{8}', text))
# \d{4}-\d{8}这是一个组合的模式,表示前面4个数字,中间一个横杠,后面8个数字
# 结果:['0571-52152166']