You need to enable JavaScript to run this app. 如何用正则表达式拆分提取CAT对应的数值与误差值?
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式拆分提取CAT对应的数值与误差值?

原有代码失效原因
  • 变量名不匹配:代码中定义的测试文本变量为test,但正则匹配时传入的是未定义的text变量,运行时会直接抛出变量不存在的报错
  • 数字匹配规则错误:正则内代表数字的\d漏写了反斜杠,写成了普通字符d,完全无法识别数字内容;同时把数字拆成零散的单字符匹配,对整数、不同长度的小数兼容极差
  • 分隔符匹配逻辑错误:把±和+/-写在单字符匹配的[]组里,会把+、-、/当成独立单字符匹配,识别不了完整的+/-分隔符
  • 结果处理逻辑错误:通过''.join把所有匹配到的长文本拼接后再拆分,会把多组匹配的数值完全混合,无法区分每一组对应的均值和误差值
修正后的可运行实现

匹配逻辑做了三点核心优化:

  • 采用通用数值匹配规则\d+(?:\.\d+)?,可同时覆盖整数、任意长度小数,不需要写死小数位数量
  • 用非捕获组(?:±|\+/-)匹配两种格式的分隔符,兼容分隔符前后任意数量的空格
  • 用两个捕获组直接提取每一组匹配里的两个目标数值,从根源上避免多组内容混淆

完整可运行代码:

import re

test_text = "CAT 13.589 ± 24.5 CAT 55  +/- 24"
match_pattern = r'CAT\s+(\d+(?:\.\d+)?)\s*(?:±|\+/-)\s*(\d+(?:\.\d+)?)'
extracted = re.findall(match_pattern, test_text)

# 按要求格式输出
for v1, v2 in extracted:
    print(f"{v1} {v2}")

运行后输出完全符合预期:

13.589 24.5
55 24

如果需要保留原文本中数值和分隔符之间的多空格间隔,只需在打印时调整输出的空格数即可,不影响核心匹配逻辑。


内容的提问来源于stack exchange,提问作者Gayathri Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 05:54:03