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

如何用正则表达式从Pandas DataFrame提取多种格式英寸值至尺寸列?

解决英寸格式匹配的正则方案

问题分析

你写的正则存在几个核心漏洞:

  1. 开头强制要求\d+,导致无法匹配1/2"这类纯分数格式的英寸值
  2. 小数部分\.\d*的位置错误且未设为可选,无法兼容整数或分数格式
  3. 使用原始字符串(r'')时,"无需额外转义,转义后反而会匹配\"而非目标字符

正确正则表达式

pattern = r'(?:\d+\s*)?(?:\d+/\d+|\d+\.\d+|\d+)"'

正则逻辑拆解

  • (?:\d+\s*)?:匹配可选的整数前缀+空格(比如1 在1 1/2"中的部分),?:表示非捕获组,避免生成多余分组
  • (?:\d+/\d+|\d+\.\d+|\d+):覆盖三种数值格式,用|分隔分支:
    • \d+/\d+:匹配分数格式(如1/2、3/4)
    • \d+\.\d+:匹配小数格式(如1.5、2.75)
    • \d+:匹配整数格式(如1、10)
  • ":直接匹配转义后的英寸引号(原始字符串模式下无需转义)

测试验证

该正则可精准匹配你列出的所有格式:

  • 1" ✅
  • 1 1/2" ✅
  • 1.5" ✅
  • 1/2" ✅

扩展用法

如果需要单独提取数值部分(不含"),可调整为带捕获组的版本:

pattern = r'((?:\d+\s*)?(?:\d+/\d+|\d+\.\d+|\d+))"'

匹配后通过group(1)即可获取纯数值内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:07:22