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

求匹配xxxx:xx格式字符串首个/第二个实例的正则表达式

问题描述

我有一系列如下格式的字符串:

08:00 0160:00 0000:00 0160:00
0000:00 0000:00
09:00 08:00 0120:00 0120:00

需要分别编写正则表达式,匹配其中格式为xxxx:xx的第一个和第二个字符串。尝试过多个正则表达式但均无效:

\s\b\d{4}:\d{2}\s
(?<!\d)\d{4}:\d{2}
\b\d{4}:\d{2}
(?<=\s)\d{4}:\d{2}(?=\s)
^\d\s\b\d{4}:\d{2}\s

该正则需用于仅支持正则的前端OCR工具,无法通过代码获取匹配实例,要求直接匹配目标内容而非分组。

可行正则方案

匹配每行第一个xxxx:xx格式字符串

正则表达式:

(?<=^(?:(?!\d{4}:\d{2}).)*)\d{4}:\d{2}

说明:通过正向预查锁定行首到第一个xxxx:xx之前的范围,确保只命中每行首次出现的目标格式,兼容行首直接是目标格式的场景(如第二行)。

匹配每行第二个xxxx:xx格式字符串

正则表达式:

(?<=^(?:(?!\d{4}:\d{2}).)*\d{4}:\d{2}\s*)\d{4}:\d{2}

说明:在第一个匹配逻辑的基础上,追加匹配第一个xxxx:xx及其后续空白字符,确保只命中每行第二个出现的目标格式,兼容两个目标连续的场景(如第二行)。

原正则无效原因

  • 多数正则强制要求目标前后为空格,漏掉了行首/行尾无空格的目标场景;
  • 未做范围限定,会匹配所有符合格式的字符串,无法精准定位第N个目标;
  • 部分正则对行首内容做了错误限定(如要求行首是单个数字),适配性极差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:35:23