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

如何修正正则表达式,精准提取oz、ml单位前的对应数值?

修正方案

你原来的正则使用了贪婪匹配符.*,会从第一个出现的数字一直匹配到目标单位,导致中间无关内容被包含在内。直接分组捕获单位前紧邻的数值和对应单位即可解决问题:

  1. 修正后正则为:r"(\d+\.?\d*)\s*(oz|ml)"
    • (\d+\.?\d*):捕获整数/小数格式的数值
    • \s*:兼容数值和单位之间存在空格的场景
    • (oz|ml):匹配你指定的目标单位
  2. 把捕获到的数值和单位用空格拼接,即可得到符合要求的输出

完整可运行代码

import re
import pandas as pd
look_ahead = "oz|ml"

s = pd.Series(['Bla bla 0.75 oz. Bottle',
              'Mugs, 8oz. White',
              'Bowls, 4.4" dia x 2.5", 12ml. Natural',
              'Ala bala 3.3" 30ml Bottle'])
size_and_units = s.str.findall(rf"(\d+\.?\d*)\s*({look_ahead})").str.join(" ")
print(size_and_units)

运行输出

0    0.75 oz
1       8 oz
2      12 ml
3      30 ml
dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:45:04