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

如何用正则表达式匹配多行日志中有效「OPEN...START」结构并统计次数

有效OPEN-START配对的正则匹配实现

前置规则确认

  • 日志中的OPEN、START均为单独占一行的标记,而非行内子串
  • 异常场景下前序无配对START的OPEN需要完全忽略,仅统计「最近一个OPEN到后续第一个START」的有效配对

正则表达式实现

开启**多行匹配模式(m)**后使用以下正则:
^OPEN$\r?\n(?:(?!^OPEN$|^START$).*\r?\n)*?^START$

语法说明

  • ^OPEN$:锚定单独为一行的OPEN标记,多行模式下^/$可匹配每行的首尾边界
  • \r?\n:匹配OPEN行后的换行符,适配Windows/Unix不同换行格式
  • (?:(?!^OPEN$|^START$).*\r?\n)*?:非贪婪匹配中间的所有多行日志内容,通过负向前瞻排除中间出现的独立行OPEN/START,避免错误截断
  • ^START$:锚定单独为一行的START标记,作为配对的结束边界

适配调整

  • 如果OPEN/START行存在前后空格的情况,可调整正则为:
    ^[ \t]*OPEN[ \t]*$\r?\n(?:(?!^[ \t]*OPEN[ \t]*$|^[ \t]*START[ \t]*$).*\r?\n)*?^[ \t]*START[ \t]*$
  • 如果需要匹配行内嵌入的OPEN/START标记,可移除正则中的行边界锚定^/$

匹配效果验证

针对提到的异常日志结构:

OPEN
无配对的前序日志内容
OPEN
有效配对的日志内容
START

上述正则仅会匹配第二个OPEN到START的完整片段,不会将前序无配对的OPEN纳入统计,匹配结果的总个数即为有效配对的统计次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 06:45:11