You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可提取带可选$和逗号的两位小数数字的正则表达式

解决提取带格式数值的正则表达式问题

首先,咱们来分析一下你之前的正则表达式为什么没匹配到结果:

  • ^[0-9]+\.[0-9]{2}$ 是匹配整行完全是一个不带逗号、不带符号的小数,但你的目标数值前后都有其他文本,这个规则完全不适用。
  • [0-9]+\.[0-9]{2}[^0-9] 要求小数后面必须跟非数字字符,而且没考虑负号和千分位逗号,还会把后面的非数字字符也匹配进去,显然不符合需求。

正确的正则表达式

针对你的需求(提取带千分位逗号、正负号、保留两位小数的数值),可以使用这个正则:

-?\d{1,3}(?:,\d{3})*\.\d{2}

正则各部分解释:

  • -?:匹配可选的负号,用来处理负数情况
  • \d{1,3}:匹配1到3位数字,对应数值的起始部分
  • (?:,\d{3})*:匹配0个或多个「逗号+3位数字」的组合,处理千分位分隔符;?:表示这是一个非捕获组,避免生成多余的分组结果
  • \.\d{2}:严格匹配小数点后两位数字

示例用法(以Python为例)

假设你的输入文本是:

text = "New Balance $13,093.75 Old balance -121.33"

用re.findall提取数值:

import re
pattern = r"-?\d{1,3}(?:,\d{3})*\.\d{2}"
matches = re.findall(pattern, text)
print(matches)  # 输出: ['13,093.75', '-121.33']

这样就能精准提取到你需要的目标数值了。

内容的提问来源于stack exchange,提问作者Anish Sivadas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:20:34