0

我有一个如下所示的文本日志文件:

    --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 上使用它来监控服务。

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

4

1 回答 1

1

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

您可以匹配包含 Error 的块,同时断言最后没有以开头的部分--Start

^\h*--Start .*\R\h*--Error\R\h*--End\b.*$(?!\R\s*--Start\b)

解释

  • ^字符串的开始
  • \h*--Start .*\R匹配与 start 后跟换行符的行
  • \h*--Error\R匹配带有错误的行,后跟换行符
  • \h*--End\b.*$将行与 End 匹配,直到字符串的末尾
  • (?!\R\s*--Start\b)负前瞻,匹配换行符并断言后面没有以开头的第一行--Start

查看正则表达式演示

于 2021-01-19T19:04:32.310 回答