首页 > 解决方案 > 如何使用正则表达式从字符串中提取特定类型的数字?

问题描述

考虑这个字符串:

text = '''
4 500,5

12%

1,63%

568768,74832 days in between

34 cars in a row'''

如您所见,有简单的数字、中间有空格的数字、带逗号的数字,等等。因此,4 500,5被视为一个独立的、单独的数字。用逗号和空格提取数字很容易,我发现模式如下:

pattern = re.compile(r'(\d+ )?\d+,\d+')

但是,我正在努力提取像 12 和 34 这样的简单数字。我尝试使用(?!...)[^...]但这些选项不允许我排除其他数字中不需要的部分。

标签: pythonregex

解决方案


((?:\d+ )?\d+,\d+)|(\d+(?! \d))

我相信这会做你想要的(Regexr 链接:https ://regexr.com/695tc )

为了捕获“简单”数字,它会查找 [一个或多个数字],其后不跟 [一个空格和另一个数字]。

我进行了编辑,以便您可以根据需要适当地使用捕获组。


推荐阅读