import re
m = re.findall('\d*', 'sdf12')
print(m)
结果是 ['', '', '', '12', '']
我自己算的觉得结果应该是这样:
s —— 0次
d —— 0次
f —— 0次
1 —— 1次
2 —— 1次
12 ——2次
星号能匹配0次和多次,那1次的结果为什么没有匹配出来?还有‘12’后面为什么还有一个0次?星号到底是如何匹配的?
import re
m = re.findall('\d*', 'sdf12')
print(m)
结果是 ['', '', '', '12', '']
我自己算的觉得结果应该是这样:
s —— 0次
d —— 0次
f —— 0次
1 —— 1次
2 —— 1次
12 ——2次
星号能匹配0次和多次,那1次的结果为什么没有匹配出来?还有‘12’后面为什么还有一个0次?星号到底是如何匹配的?
\d* 是匹配连续的0个或多个数字。并且是贪婪匹配,能匹配2个时就不会只匹配1个。
结果是 ['', '', '', '12', '']
因为\d* 可以匹配0个数字,也就等同匹配空字符串''
第1次的''是匹配s前面的空字符串
第2次的''是匹配d前面的空字符串
第3次的''是匹配f前面的空字符串
第4次'12'是能匹配2个时就不会只匹配1个。
第5次的''是匹配字符串结尾前的空字符串