span这个方法,一般用在match和search上,如果想把findall匹配字符的所有位置找出来,好像没有一步可以实现的函数.用这个自定义函数把匹配的位置都找出来,可以在某些文本中,给所有匹配的字符修改字体和背景色,自定义一个spanall函数,可以实现一步获取所有匹配位置,代码如下:
import re
stri='12aaa345bbbb6789'
def spanall(x,y):
l=[(0,0)]
z=re.search(x,y)
while z != None:
span1=z.span()
span2=(l[-1][1]+span1[0],l[-1][1]+span1[1])
l+=[span2]
n=span1[1]
y=y[n:]
z=re.search(x,y)
return l[1:]
ll=spanall('\d+',stri)
ss=re.findall('\d+',stri)
print(ll)
print(ss)
'''
打印结果如下:
[(0, 2), (5, 8), (12, 16)]
['12', '345', '6789']
'''