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

编写多条件匹配Regex表达式:提取ABC关联的目标数字

提取ABC关联数字的正则解决方案

针对你描述的多条件匹配场景,我整理了一个能覆盖所有需求的正则表达式,同时会逐步拆解逻辑,帮你理解怎么适配各种情况。

最终正则表达式

(?<=ABC[-\s]?)\d+|(?<=ABC[-\s]?\d+(?:[-\s/]|and\s))\d+

使用时记得加上全局匹配标志 g,这样才能捕获到所有符合条件的数字,而不仅仅是第一个。

正则逻辑拆解

我们把这个正则拆成两部分,用|(或)连接,分别处理两种核心场景:

1. 匹配ABC直接跟随的数字

(?<=ABC[-\s]?)\d+

  • (?<=...):正向零宽断言,用来确保我们要匹配的数字前面是ABC的前缀,但不把ABC本身包含在匹配结果里
  • ABC[-\s]?:匹配ABC本身,后面可选跟一个连字符(-)或空格(\s),兼容ABC123、ABC-123、ABC 123三种格式
  • \d+:匹配1个或多个数字,也就是我们要提取的核心内容

2. 匹配ABC关联的无前缀数字

(?<=ABC[-\s]?\d+(?:[-\s/]|and\s))\d+

  • 同样用正向零宽断言,确保数字前面是「ABC+数字+分隔符」的结构
  • ABC[-\s]?\d+:先匹配ABC直接带的数字部分
  • (?:[-\s/]|and\s):非捕获组,匹配各种分隔符:
    • [-\s/]:连字符、空格、斜杠
    • and\s:匹配and (注意后面的空格,避免误匹配其他包含and的单词),如果需要忽略大小写,可以改成(?i)and\s
  • \d+:匹配后续关联的无ABC前缀的数字

测试示例

我们用你给出的示例和几种典型场景测试:

场景1:ABC直接带数字

输入:ABC-210293CompletedReports
匹配结果:210293

场景2:ABC数字+斜杠连接的数字

输入:ABC 1234 / 1134
匹配结果:1234, 1134

场景3:ABC数字+连字符连接的数字

输入:ABC 1234-1134
匹配结果:1234, 1134

场景4:ABC数字+and连接的数字

输入:ABC 1234 and 1134
匹配结果:1234, 1134

场景5:多处ABC格式内容

输入:ABC 567 / 890 and ABC-123 completed
匹配结果:567, 890, 123

额外适配说明

  • 如果需要支持ABC后面直接跟数字(无空格或连字符,比如ABC1234),当前正则已经覆盖,因为ABC[-\s]?里的?表示可选,所以ABC1234会被匹配到
  • 如果需要忽略大小写(比如匹配abc 123),可以在正则开头加上(?i)标志,变成(?i)(?<=ABC[-\s]?)\d+|(?<=ABC[-\s]?\d+(?:[-\s/]|and\s))\d+
  • 如果分隔符还有其他类型(比如&、or),只需要在(?:[-\s/]|and\s)里添加对应的规则即可,比如改成(?:[-\s/&]|(?:and|or)\s)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:49