簡體   English   中英

是否可以使用正則表達式找到兩個單詞之間最后一次出現的匹配項?

[英]Is it possible to find a match on last occurence between two words with regex?

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

    --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匹配與 start 后跟換行符的行
  • \h*--Error\R匹配帶有錯誤的行,后跟換行符
  • \h*--End\b.*$匹配與 End 的行直到字符串的結尾
  • (?!\R\s*--Start\b)負前瞻,匹配換行符並斷言后面沒有以--Start開頭的第一行

查看正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM