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



一个快速测验,应该是一个无需思考的问题:

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

1323 323 434

即一个十进制数字,后面跟着一些空白,并根据需要重复多次。我尝试了以下方法:

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

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

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

有什么想法吗?

您的问题是重复捕获组,每次重复都会覆盖上一个子匹配。

如果你只想找到后面跟着空白字符的数字,你可以使用

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

删除最后一个+:

>>> 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']

最新更新