为什么python的re.findall不返回我的例子中所有找到的子串?

时间:2012-12-24 07:58:51

标签: python findall

  

可能重复:
  Python regex find all overlapping matches?

我不明白为什么python的re.findall在下面的例子中没有返回所有找到的子串。有什么想法吗?

>>> import re
import re
>>> t='1 2 3'
t='1 2 3'
>>> m=re.findall('\d\s\d',t)
m=re.findall('\d\s\d',t)
>>> m
m
['1 2']

但预期的结果是 m = ['1 2','2 3']。

有关信息,我使用的是python 2.6.1。感谢。

1 个答案:

答案 0 :(得分:5)

help(re.findall)

  

在模块中帮助函数findall:

     

findall(pattern,string,flags = 0)
  返回所有列表   字符串中的非重叠匹配。

     

如果模式中存在一个或多个组,则返回
  小组名单;如果模式超过,这将是一个元组列表   一组。

     

结果中包含空匹配。

由于两个结果重叠(两者都有' 2'),只会返回第一个。

如果您将t='1 2 3 4',则结果将为['1 2', '3 4']