一、问题来源:
s1 = "(\d){3}([a-zA-Z])"
s2 = "ddd.111kkkk6666lll"
re.findall(s1,s2)
output:
[('1', 'k'), ('6', 'l')]
为什么会返回这样的结果呢,(\d){3}预期返回三个数字,但只返回一个?
实验一、
import re
s1 = "(\d)([a-zA-Z])"
s2 = "ddd.123kkkk6666lll"
re.findall(s1,s2)
ouput:
[('3', 'k'), ('6', 'l')]
实验二、
s1 = "(\d){3}([a-zA-Z])"
s2 = "ddd.123kkkk6666lll"
re.findall(s1,s2)
output:
[('3', 'k'), ('6', 'l')]
实验三、
s1 = "(\d){4}([a-zA-Z])"
s2 = "ddd.123kkkk6666lll"
re.findall(s1,s2)
output:
[('6', 'l')]
实验四、
s1 = "(\d){5}([a-zA-Z])"
s2 = "ddd.123kkkk6666lll"
re.findall(s1,s2)
output:
[]
实验五、
s1 = "(\d{3}[a-zA-Z])"
s2 = "ddd.123kkkk6666lll"
re.findall(s1,s2)
output:
['123k', '666l']
结论:
1、正则表达式中有多少个括号,在匹配成功的结果中就会有多少个元素;
2、(){3}这种也只选择返回最后一个匹配的元素,不会有返回3个;