Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有可能在最后一次出现时找到两个单词与regex之间的匹配项?_Regex_Prtg - Fatal编程技术网

是否有可能在最后一次出现时找到两个单词与regex之间的匹配项?

是否有可能在最后一次出现时找到两个单词与regex之间的匹配项?,regex,prtg,Regex,Prtg,我有一个如下所示的文本日志文件: --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 最后一个块是最后一个注册的事件。 只有在最后一个块中出现“error”时,才有方法匹配正则表达式吗 我尝试了类似于((?=开始)(*

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

    --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
最后一个块是最后一个注册的事件。 只有在最后一个块中出现“error”时,才有方法匹配正则表达式吗

我尝试了类似于
((?=开始)(*)(?=错误)(*)(?=结束))(?:(?!\\)
的方法,但不起作用。我不是正则表达式专家

我试图在PRTG上使用它来监视服务

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

阅读本页,支持的正则表达式引擎是PCRE

您可以匹配包含错误的块,同时断言在末尾,后面没有以
--Start
开头的部分

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

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

请参阅一个

您可以尝试:
[\s\s]*(-Start.*\s+--Error\s+--End.*)
它不起作用,因为PRTG不支持您链接的手册页面上报告的正则表达式标志。_italic_PRTG支持形式为(?isgmxUJ)的正则表达式(regex)选项及其否定形式,例如(?-i)。PRTG不支持regex标志,例如/g(全局)、/s(单行)或/gs,如果您试图设置标志,则无法正确搜索目标字符串您的答案仍然非常有用:)@MMDevAdvantix您可以尝试
(?m)
内联多行选项
(?m)^\h*--Start.*\R\h*--Error\R\h*--End\b.*$(?!\R\s*--Start\b)
@MMDevAdvantix另一个选项可以是
[\s\s]*(-Start.*\s+--Error\s+--End.*)(?![\s\s*--Start)
两个选项都不起作用,我还试图简化正则表达式,我将您的答案标记为有效,因为它无论如何都是有用的,而且问题似乎与PRTG的限制有关。我会联系他们的支持!非常感谢您的宝贵帮助:)