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

Python正则表达式:提取除后接/前随特定术语外的所有数字

正则提取数字排除指定内容的解决方案

需求梳理

需要从文本中提取数字,同时排除三类内容:

  • 后接指定词语/字符的数字
  • 紧跟在指定词语/字符之后的数字
  • 格式为带/的日期类内容

针对给出的示例,最终需要保留的匹配结果为:4.5、$55、1,200

原有正则的问题

  • 没有补充负向后行断言规则,无法过滤紧跟在指定前缀后的数字(比如charB后的21.6、wordA后的3)
  • 前瞻匹配逻辑边界不清晰,无法正确过滤后接指定后缀的数字
  • 没有添加日期格式的过滤规则,无法排除带/的日期相关数字

调整后可用正则

(?<!\bwordA |charB)(?<!\/)\$?\d+(?:[.,]\d+)*(?!\/|charA| ?\bwordB)

正则规则拆解

  • (?<!\bwordA |charB):负向后行断言,过滤所有紧跟在wordA (带空格)或charB后的数字
  • (?<!\/):负向后行断言,过滤前面带/的数字,避免匹配日期内的数字
  • \$?\d+(?:[.,]\d+)*:核心数字匹配规则,兼容带$前缀、千分位逗号、小数点的数字格式
  • (?!\/|charA| ?\bwordB):负向前瞻断言,过滤后面带/、charA、可选空格加wordB的数字,同时避免匹配日期内的数字

效果验证

对应示例文本4.5 $55 1,200 wordA 3 sometext 2 wordB sometext 4.3charA sometext charB21.6 sometext 11/10/22,所有需要排除的3、2、4.3、21.6、11/10/22都已被过滤,仅保留符合要求的数字。

注意事项

  • 该正则需要支持可变长度负向后行断言的引擎才能正常运行,对应环境为JavaScript ES2018+、Python 3.10+、Java 9+等
  • 如果需要调整排除的特定词语/字符,直接修改前后断言内的匹配项即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:05