如何使用正则表达式提取含多逗号和小数点的字符串中的数字
解决方案:提取带逗号的格式化数字
原正则表达式\d+\.*\d+仅能匹配连续数字及可选小数点,无法处理作为千位分隔符的逗号,导致提取结果被拆分为多个片段,不符合需求。
修改后的代码
import re b = "$2,01,468.75" # 匹配$符号后的带千位分隔符和小数的数字 c = re.findall("(?<=\$)\d+(?:,\d+)*\.\d+", b) print(c) # 输出: ['2,01,468.75']
正则表达式说明
(?<=\$):正向零宽断言,确保目标内容前是$符号,精准定位需要提取的数字部分\d+:匹配数字的起始部分(至少1位数字)(?:,\d+)*:非捕获分组,匹配0次或多次“逗号+数字”的组合,兼容多段千位分隔符\.\d+:匹配小数点及后续的小数部分
如果需要兼容无小数的带逗号数字(如$1,234),可以改用更通用的正则:
c = re.findall("(?<=\$)\d+(?:,\d+)*(\.\d+)?", b)
内容的提问来源于stack exchange,提问作者Ajay
相关产品推荐
相关产品推荐

