问题描述
--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 .*\R\h*--Error\R\h*--End\b.*$(?!\R\s*--Start\b)
说明
-
^
字符串开头 -
\h*--Start .*\R
匹配开头后跟换行符的行 -
\h*--Error\R
匹配带有 Error 后跟换行符的行 -
\h*--End\b.*$
用 End 匹配行直到字符串结束 -
(?!\R\s*--Start\b)
否定前瞻,匹配换行符并断言后面没有以--Start
开头的第一行