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

正则表达式需求:提取前置含REST的HAB:后对应代码

解决方法:提取REST后HAB:的有效代码

要准确提取所有HAB:后符合要求的代码(前方必须包含REST,中间可夹杂其他内容),可以使用以下正则表达式(开启全局匹配g修饰符):

(?:^|\bREST\b)(?:(?!HAB:).)*HAB:\s*(\S+)

正则逻辑拆解

  • (?:^|\bREST\b):匹配文本开头,或者完整的REST单词(\b确保是独立单词,避免匹配类似RESTful的字符串)
  • (?:(?!HAB:).)*:匹配任意字符,直到遇到第一个HAB:(确保我们只捕获每个REST之后的第一个有效HAB:)
  • HAB:\s*:匹配HAB:以及后面的任意空白字符(适配空格或制表符的情况)
  • (\S+):捕获一个或多个非空白字符,也就是HAB:后面的有效代码(直接排除空内容的情况)

你的原正则问题分析

你之前使用的(REST.*?) *(HAB:) (.*?)( |$)存在几个缺陷:

  1. 重复捕获:当连续出现多个REST时(比如REST REST REST HAB: 54783-04),每个REST都会触发一次匹配,导致重复捕获同一个代码。
  2. 空内容捕获:如果HAB:后面没有有效代码(比如REST HAB:),(.*?)会捕获空字符串,不符合提取有效代码的需求。
  3. 无单词边界:没有限定REST为独立单词,可能误匹配包含REST的其他字符串。

测试结果

将这个正则应用到你的测试文本,会得到以下有效代码:

  • 75RF-3729-70D-01
  • 75RF-3729-70D-02
  • 75RF-3729-70D-03
  • 54783-04
  • 45923
  • 456734

完全符合你排除非REST引导的HAB:(比如CLUE HAB: 234-543)和空内容的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:43:59