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

如何编写正则表达式提取行首或带Number:前缀的编号字符串

正确正则实现

通用兼容方案(适配所有主流正则引擎,无需分支重置支持)

正则表达式:

^\s*(?:.*Number: (\S+)|(\S+))

需要开启 多行模式(m) 匹配,最终提取结果取捕获组1和捕获组2中非空的那个值即可。

如果一行可能存在多个Number: 前缀,需要取第一个出现的对应编号,将.*替换为非贪婪匹配.*?即可:

^\s*(?:.*?Number: (\S+)|(\S+))

简化方案(支持分支重置的引擎可用,如PCRE、Python regex库、Java 9+)

正则表达式:

^\s*(?|.*Number: (\S+)|(\S+))

同样开启多行模式,直接取捕获组1的值即可。


匹配逻辑说明

  1. 优先级设置:优先匹配整行中带Number: 前缀的编号,只有当行内不存在该前缀时,才回退匹配行首第一个非空白字符序列,完美适配两种场景需求。
  2. 行首\s*兼容行开头存在空格/缩进的情况,符合对“行首第一个非空白序列”的定义。
  3. 每行只会产生1次匹配,不会出现多匹配、错误提取行首无关单词的问题。

示例匹配结果

针对给出的三行测试用例,匹配结果如下:

  • ABC123 bla bla → 提取到ABC123
  • Number: ABC123 bla bla → 提取到ABC123
  • Some words 123 Number: ABC123 bla bla → 提取到ABC123

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:54:02