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

如何编写匹配单词后接连字符/空格加大写字母数字组合的正则表达式

正则匹配方案

原正则存在的问题

  • 字符集[-|\s]写法错误:[]内不需要|表示或,此处的|会被识别为普通匹配字符,反而会漏掉合法场景
  • 未考虑分隔符(连字符/空格)前后可能存在多余空白,无法覆盖NRG -CC009、NRG - LU005这类带中间空格的场景
  • 后续规则[A-Z]+[\d@]+要求大写字母在前、数字在后,无法匹配大写字母和数字穿插的场景(比如示例中的ARST2031)
  • 未添加非句首的匹配限制

可用正则表达式

Python基础写法(完整匹配目标片段):

r'(?<!^)\b\w+(?:\s*[- ]\s*)[A-Z0-9]+\b'

如果需要分别提取前面的单词和后面的大写数字组合,可以改为带捕获组的版本:

r'(?<!^)\b(\w+)(?:\s*[- ]\s*)([A-Z0-9]+)\b'

规则说明

  • (?<!^):否定后视断言,确保匹配内容不在整句开头
  • \b:单词边界,避免匹配到单词内部的片段
  • \w+:匹配前面的单词部分
  • (?:\s*[- ]\s*):非捕获组,匹配分隔部分:允许连字符或空格的前后存在任意数量的空白,覆盖所有示例中的分隔场景
  • [A-Z0-9]+:匹配全大写字母与数字的任意组合,支持两者穿插
  • 尾部\b:避免匹配到不完整的后缀内容

覆盖验证

以下所有示例均可正常匹配:

  • Alliance-A071801
  • NRG-BN009
  • NRG -CC009
  • NRG CC009
  • COG- ARST2031
  • ETCTN-10186
  • NRG - LU005

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:01