正则模块
字符组
字符
量词
.^$
*+?{}
贪婪匹配
字符集
分组()与或|[^]:
(1)^[1-9]\d{13,16}[0-9x]$ #^以数字0-9开始, \d{13,16}重复13次到16次 $结束标志 上面的表达式可以匹配一个正确的身份证号码 (2)^[1-9]\d{14}(\d{2}[0-9x])?$ #?重复0次或者1次,当是0次的时候是15位,是1的时候是18位 (3)^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ #表示先匹配[1-9]\d{16}[0-9x]如果没有匹配上就匹配[1-9]\d{14}
re模块相关方法
# 1.re模块下的常用方法 # 1.findall方法 import re ret = re.findall('a','eva ang egons') # #返回所有满足匹配条件的结果,放在列表里 print(ret) # 2.search方法 # 函数会在字符串中查找模式匹配,只会找到第一个匹配然后返回 # 一个包含匹配信息的对象,该对象通过调用group()方法得到匹配的 # 字符串,如果字符串没有匹配,则报错 ret = re.search('s','eva ang egons')#找第一个 print(ret.group()) # 3.match方法 print(re.match('a','abc').group()) #同search,只从字符串开始匹配,并且guoup才能找到 # 4.split方法 print(re.split('[ab]','abcd')) #先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割 # 5.sub方法 print(re.sub('\d','H','eva3sdf4ahi4asd45',1)) # 将数字替换成'H',参数1表示只替换一个 # 6.subn方法 print(re.subn('\d','H','eva3sdf4ahi4asd45')) #将数字替换成’H‘,返回元组(替换的结果,替换了多少次) # 7.compile方法 obj = re.compile('\d{3}')#将正则表达式编译成一个正则表达式对象,规则要匹配的是三个数字 print(obj)
ret = obj.search('abc12345eeeee')#正则表达式对象调用search,参数为待匹配的字符串 print(ret.group()) #.group一下就显示出结果了 # 8.finditer方法 ret = re.finditer('\d','dsf546sfsc')#finditer返回的是一个存放匹配结果的迭代器 # print(ret)#<callable_iterator object at 0x00000000021E9E80> print(next(ret).group())#查看第一个结果 print(next(ret).group())#查看第二个结果 print([i.group() for i in ret] )#查看剩余的左右结果