Python正则表达式重复十进制数字序列,后跟空格

时间:2013-12-06 21:25:38

标签: python regex

快速测验,应该是一个明智的选择:

我希望能够匹配以下类型的字符串:

1323 323 434

即。十进制数,后跟一些空格,并根据需要重复多次。我尝试了下面的内容:

re1 = re.compile(r"(\d+\s+)+")

但是在给定的字符串上,re1.findall("1323 323 434 ")返回

['434'],虽然我希望它返回['1323 ','323 ','434 '],甚至只返回没有空格的数字

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

删除最后一个+

>>> re1 = re.compile(r"(\d+\s+)")
>>> re1.findall("1323 323 434 ")
['1323 ', '323 ', '434 ']
#Without spaces:
>>> re1 = re.compile(r"(\d+)\s+")
>>> re1.findall("1323 323 434 ")
['1323', '323', '434']

答案 1 :(得分:3)

您的问题是您正在重复捕获组,每次重复都会覆盖之前的子匹配。

如果您只想查找后跟空白字符的数字,可以使用

re.findall(r"\d+(?=\s)", "1323 323 434 ")