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

如何调整正则表达式正确提取分子或分母含小数的分数数值

正则调整方案

原正则存在的核心问题是正则分支的匹配顺序不符合需求:Python正则分支遵循左到右优先匹配规则,原有写法把小数、整数的匹配规则放在分数规则之前,会先匹配到分数的分子部分,导致带小数的分数被拆分为多个不完整的结果。

按照你要求的优先级(含小数的分数>普通分数>小数>整数),将复杂度更高、优先级更高的匹配规则放在分支最前面即可,调整后的完整代码如下:

import re

def extract_numbers(text):
    # 匹配分支按优先级从高到低排列
    pattern = r"[-+]?(?:\d*\.\d+|\d+)/(?:\d*\.\d+|\d+)|[-+]?\d*\.\d+|[-+]?\d+"
    return re.findall(pattern, text)

效果验证

运行你给出的测试代码:

print(extract_numbers('this is difficult to get: -124.01/11.1'))

输出结果符合预期:

['-124.01/11.1']

该规则同时保留了你原有的全部特性:支持识别正负号、保留数值前导零,可覆盖整数、小数、普通整数分数、分子/分母含小数的分数全场景提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:02