我有以下一组数字:
SalesCost% Margin
2,836,433.182,201,355.6422.39
预期结果:
我想将其分离并提取数字,以便得到如下所示的结果:
2,836,433.18
2,201,355.64
22.39
尝试
我尝试了(d+)(?:.(d{1,2}))?
正则表达式,但它只提取数字,直到第一个小数,即我只得到2,836,433.18
。
问题
有没有一种方法可以使用Regex(或者通过Python(提取数字来获得上面显示的结果?
您可以使用
re.findall(r'd{1,3}(?:,d{3})*(?:.d{1,2})?', text)
re.findall(r'(?:d{1,3}(?:,d{3})*|d+)(?:.d{1,2})?', text)
请参阅regex演示#1和regex演示#2。
详细信息:
d{1,3}
-一位、两位或三位(?:,d{3})*
-逗号和三位数字出现零次或多次(?:.d{1,2})?
—.
和一个或两个数字的可选序列
(?:d{1,3}(?:,d{3})*|d+)(?:.d{1,2})?
变体支持类似123456.12
的数字,即不包含整数部分的数字分组符号。