1、{n}:表示前一个字符连续出现
res = re.findall("\d{3}", "123aaa1111bb2323fs55555")print(res)
运行结果:['123', '111', '232', '555']
2、“贪婪模式”概念
贪婪模式:python中正则匹配数量的时候,默认是贪婪模式
非贪婪默认:在表示数量范围后面加个?,就可以关闭贪婪模式
表示范围的有:{n,m}、{3,}、+、*
只有表示数量范围的才存在贪婪默认
3、{n,m}:表示前一个字符连续出现n到m次
默认贪婪模式:
res = re.findall("\d{3,4}", "123aaa1111bb2323fs55555")print(res)
运行结果:['123', '1111', '2323', '5555']
非贪婪模式:
res = re.findall("\d{3,4}?", "123aaa1111bb2323fs55555")print(res)
运行结果:
4、{n,}:表示前一个字符至少连续出现n次
默认贪婪模式:
res = re.findall("\d{3,}", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")print(res)
运行结果:['123', '1111', '2323', '55555', '555565745', '455625765757']
非贪婪模式:
res = re.findall("\d{3,}?", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")print(res)
运行结果:['123', '111', '232', '555', '555', '565', '745', '455', '625', '765', '757'] (只匹配连续的3个)
5、+:表示前一个字符至少出现1次以上
默认贪婪模式:
res = re.findall("[a-z]+", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")print(res)
运行结果:['aa', 'a', 'bb', 'fs', 'ss', 'bgg']
非贪婪模式:
res = re.findall("[a-z]+?", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")print(res)
运行结果:['a', 'a', 'a', 'b', 'b', 'f', 's', 's', 's', 'b', 'g', 'g']
6、*:表示前一个字符至少出现0次以上
默认贪婪模式:
res = re.findall("[a-z]*", "123aa22a1111bb")print(res)
运行结果:['', '', '', 'aa', '', '', 'a', '', '', '', '', 'bb', '']
非贪婪模式:
res = re.findall("[a-z]*?", "123aa22a1111bb")print(res)
运行结果:['', '', '', '', 'a', '', 'a', '', '', '', 'a', '', '', '', '', '', 'b', '', 'b', '']
7、解决项目中的数据匹配
data = '{"member_id":"#member_id#","pwd":"#pwd#","user":"##","loan_id":"#l#"}'res = re.findall("#.*?#", data)print(res)
运行结果:['#member_id#', '#pwd#', '##', '#l#']