是否有可能用正则表达式找到两个单词之间最后出现的匹配?



我有一个文本日志文件,看起来像这样:

--Start 10:00:00
--Success
--End 10:01:02
--Start 10:02:32
--Success
--End 10:02:40

--Start 10:02:00
--Error
--End 10:02:05

最后一个块是最后一个注册的事件。是否有一种方法来匹配一个正则表达式只有当在最后一个块"错误"显示了?

我尝试了一些像((?=Start)(*.)(?=Error)(*.)(?=End))(?:.(?!\)),但不工作。我不是一个正则表达式专家。

我正在尝试在PRTG上使用它来监视服务。

非常感谢你的帮助,谢谢。

阅读此页https://www.paessler.com/manuals/prtg/regular_expressions支持的正则表达式引擎是PCRE。

您可以匹配包含Error的块,同时断言在末尾,后面没有以--Start

开头的部分
^h*--Start .*Rh*--ErrorRh*--Endb.*$(?!Rs*--Startb)

  • ^字符串起始
  • h*--Start .*R匹配以换行
  • 开头的行
  • h*--ErrorR匹配带有Error的行,后跟一个换行符
  • h*--Endb.*$与End匹配,直到字符串
  • 结束
  • (?!Rs*--Startb)负向前看,匹配换行符并断言后面没有以--Start
  • 开头的第一行

查看正则表达式演示

相关内容

最新更新