
例如:0571-23123345-9527,这三个子模式用固定字符连接
2、各个部分的字符分类是什么这3个子模式都是数字类型,可以用d,现在就可以写出模式d-d-d
3、各个子模式如何重复第1个子模式重复3-4次,第2个子模式重复7-8次,第3个子模式重复3-4次
加上次数限制之后,规则可以表示为d{3,4}-d{7,8}-d{3-4}
是否要求在某特定字符附近
5、是否有内部的限制是否要求是以某特定字符在某位置(例如要求以‘1’开头,或者以‘9527’结尾)
二、正则表达式的语法分类字符规则
重复次数-量词
位置
分组:把一个正则表达式分成几个部分,这样就可以重复某个分组
特殊字符
正则表达式语法规则中比较常用的还是字符规则和重复次数以及位置,所以重点记这三个表。
三、Python的re模块学习python中的re模块具有如下几个函数:
1、查找
- search: 查找负荷模式的字符,只返回第一个,返回Match对象。
- match: 与search相同,只是从头开始匹配。
- findall: 返回所有符合的字符串列表
- finditer: 返回一个迭代器,其中包含所有的匹配,也就是Match对象
2、替换
- sub: 替换匹配的字符串,返回替换完成的文本。
- subn: 替换匹配的字符串,返回替换完成的文本和替换的次数。
3、分割
- split: 用匹配表达式的字符串做分隔符分割原字符串。
4、编译
- compile: 把正则表达式编译成一个对象,方便以后使用。
#一般固定的字符串不使用正则表达式也可以做到,只需要借用字符串的in方法就可以
#例如:text='tel:178506597623,体重:144,学号:123456,密码:9527'
import re
text='tel:178506597123,体重:144,学号:123456,密码:9527'
#使用字符串方法:
target = '123456'
if target in text:
print('yes')
else:
print('no')
import re
print(re.findall(r'123',text))
#['123', '123']
#此处使用findall是为了避免文本中出现多个123,可以看到运行结果会把文本中所有的
#目标字符串都匹配出来。
2、匹配出同类型字符
#l2:一类字符 #找出所有的数字 text = text='tel:178506597123,体重:144,学号:123456,密码:9527' print(re.findall(r'd+',text)) #d代表数字。后面的+代表出现一个或多个 #找出所有的字符3、重复的某一类字符
#l3 : 重复某一类字符 text='tel:178506597123,体重:144,学号:123456,密码:9527' print(re.findall(r'd+',text))4、比对字符串+数字的组合
#l4 组合l2
#找出座机号码
text='tel:1785-06597123,体重:144,学号:123456,密码:9527'
print(re.findall(r'd{4}-d{8}',text))
5、外部约束,限制位置
#l6 限定位置
#在句子开头的手机号码,或者座机号码
text = '12345678910,tel2:1785-06597,体重:144,学号:123456,密码:9527'
print(re.findall(r'^d{4}-d{8}|^d{11}',text))
6、内部约束,限制字符串的格式
#l7 内部约束
#找出形如abc,abc的前后三个字母重复的字符串
text='barbar carcar harhel'
print(re.findall(r'(w{3})(1)',text))
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)