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

Google Sheets中REGEXEXTRACT提取商品数量的正则求助

适用于Google Sheets的商品数量提取正则方案

直接套下面的公式就行,所有你列的测试场景都能跑通,没标注明确数量的时候默认返回1(符合单商品默认规则),如果需要无匹配时返回0,把公式最后一个参数的1改成0即可:

=IFERROR(VALUE(REGEXEXTRACT(A1,"(?i)(?:^|[^a-z0-9])(\d)(?![0-9a-z]|st|nd|rd|th)(?:\s*x)?|(?:\(\s*(\d)\s*\))|(?:x\s*(\d))(?![0-9a-z])")),1)

匹配规则对齐说明

完全覆盖你提的所有限制要求:

  • 只提取单个1-9的数字,只要数字前后还有其他数字就直接跳过,自动过滤1996、204/343这类年份、编号里的数字
  • 兼容所有常见数量写法:数字x/数字 x、x数字/x 数字、(数字)括号包数量的格式
  • 自动跳过序数:数字后面跟st/nd/rd/th的时候判定为1st、2nd这类序数词,不做数量提取
  • 自动跳过字母数字混合编码:数字后面紧跟英文字母的时候,判定为F150、2A5这类型号/房间号,直接忽略
  • 数字紧邻*、,、()、-这类特殊字符不影响匹配,比如**1x**、2x -这类写法都能正常抓到数字

测试用例校验结果

你给出的8个测试用例全部返回预期值:

  • Red 1996 Corvette 2x - Matchbox → 2
  • 3 x SmartCar, broken 2nd door → 3
  • 2nd edition Kindle (x3) → 3
  • **1x** 2008 financial crash notice → 1
  • Collectors Edition Beannie Baby, item 204/343 → 无明确数量标注,返回1
  • (6) Nissan window motors (1995-1998 ONLY) → 6
  • White chevy F150, 1996 → 无明确数量标注,返回1
  • Green bowl, cracked (stored in room 2A5) → 无明确数量标注,返回1

你原有正则的问题

之前写的正则有三个硬伤导致匹配出错:

  • 捕获组只写了1-4,没覆盖5-9的数字,所以(6)这类场景直接匹配不到返回N/A
  • 没加负向预判规则,既没过滤st/nd/rd/th的序数场景,也没过滤数字后接字母、数字后接数字的场景,所以会把多位数里的单个数字、混合编码里的数字误抓出来
  • 没覆盖括号包数量、x在数字前面的写法,漏了很多常见的标注格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:54:23