快速测验,应该是一个明智的选择:
我希望能够匹配以下类型的字符串:
1323 323 434
即。十进制数,后跟一些空格,并根据需要重复多次。我尝试了下面的内容:
re1 = re.compile(r"(\d+\s+)+")
但是在给定的字符串上,re1.findall("1323 323 434 ")
返回
['434']
,虽然我希望它返回['1323 ','323 ','434 ']
,甚至只返回没有空格的数字
有什么想法吗?
答案 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 ")