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

正则表达式匹配数量失败求助:如何精准提取目标数字

正则匹配文本中的数量问题

问题场景

需要从一段包含产品、数量、价格的文本中精准提取指定的数量值,尝试的正则无法得到预期结果。

待匹配文本

qty 2 MBC102 Rs. 1,890 
required 2unit MBC 103 
mbc 104 2pcs @5000 
MBC 1011 @4000 4 pc Price 5000 
3pcs MBC1012 100rolls 
MBC1013 500 pc 
MBC1014 2pcs mbc 1015 
qty 2 @ 20000 unit 2 
@900 MbC-1016 rolls 150 
5000Rs mbc909 mbC 890 
56 qty @ 5000 
mbC 820 qty 90 @25000

期望提取的数量

2
2
2 
4 
3 
100 
500 
2 
2 
150 
56 
90

尝试过的无效正则

(?i)^(?!qty|unit|pc|pcs|roll|rolls).[0-9]+

解决方案

先梳理目标数量的规律:

  • 要么是qty关键词后的数字,要么是unit/pc/pcs/rolls这类单位前的数字
  • 要排除价格类数字(比如带Rs.的金额、@后的标价)

使用以下正则即可精准匹配:

(?i)(?:qty\s+|(?<=\s)|^)(\d+)(?=\s*(?:unit|pc|pcs|rolls|$)|(?=\s+qty))

正则直白解释

  • (?i):忽略大小写,适配文本里大小写混合的内容
  • (?:qty\s+|(?<=\s)|^):限定数字的前置条件,确保不会误抓产品型号里的数字(比如MBC102里的102)
  • (\d+):这就是我们要提取的纯数字数量,用括号单独捕获方便获取结果
  • (?=\s*(?:unit|pc|pcs|rolls|$)|(?=\s+qty)):限定数字的后置条件,只抓紧跟单位、行尾,或者后面跟着qty的数字,排除价格类数值

测试后完全能匹配到所有预期的数量值,直接提取每个匹配结果的捕获组内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:01:54