python - Python re:如何匹配任何数字,即使是逗号和小数点?
问题描述
我想匹配任何可能有小数、逗号或整数的数字。我尝试了以下方法,但如果数字有 > 2 个逗号,我的正则表达式将无法匹配。
谢谢
import re
string1= "6,111,123,999 5,450,900 10.32 OCT21 Dec 31, 2019"
num=re.findall(r'\b\d+[.,]*\d+[,]*d*\b', string1)
Result:
['6,111,123', '999', '5,450,900', '10.32', '31', '2019']
Desired Outcome --> ['6,111,123,999', '5,450,900', '10.32', '31', '2019']
解决方案
匹配所有数字
你可以使用\d(?:[\d,.]*\d+)?
string1= "6,111,123,999 5,450,900 10.32 OCT21 Dec 31, 2019 1"
import re
re.findall(r'\d(?:[\d,.]*\d+)?', string1)
输出:['6,111,123,999', '5,450,900', '10.32', '21', '31', '2019', '1']
仅匹配独立单词的数字
使用\b[\d,.]*\d+\b
:
string1= "6,111,123,999 5,450,900 10.32 OCT21 Dec 31, 2019 1"
import re
re.findall(r'\b[\d,.]*\d+\b', string1)
输出:['6,111,123,999', '5,450,900', '10.32', '31', '2019', '1']
编辑:仅匹配空格、字符串结尾或逗号作为分隔符
string1= "6,111,123,999 5,450,900 10.32 1a2 1-2 OCT21 Dec 31, 2019 1"
import re
re.findall(r'(?:(?<=^)|(?<=\s))[\d,.]*\d+(?=$|\s|,)', string1)
输出:['6,111,123,999', '5,450,900', '10.32', '31', '2019', '1']
推荐阅读
- python - Python3将png数据从html画布写入文件
- javascript - 为什么使用 webpack 开发服务器时从 my_domain.com 加载 webpack 块而不是从 localhost:8080 加载?
- ruby - How can I sort by index in Daru?
- scala - Keywords lookup in Spark Scala based on position
- php - 无法编辑 moodle 密码策略
- c - 需要一种快速方法将大量双精度转换为字符串
- maven-plugin - 自定义 Maven 插件开发 - getArtifacts 为空,但包含依赖项
- javascript - 导入的函数未定义
- kotlin - 比较kotlin中对象的共同属性值
- node.js - 500 服务器错误发布到使用 Postman 的节点服务器