簡體   English   中英

正則表達式嚴格匹配結尾不同的兩行

[英]Regex strictly match two lines with different endings

我正在嘗試匹配日志文件的以下文本:

2019-05-22 03:40:01 INFO  ReporteClaro:194 - Termino de procesar archivo

2019-05-22 03:40:01 INFO  ReporteClaro:208 - Termino de procesar Transaction Report

除末尾( archivo )和( Payment Report )外,它包含相同的詞。

我已經試過了:

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar (archivo|Transaction Report)

但這是可選匹配項,因為| 操作員。 這意味着它將匹配第一行或第二行,但是我嚴格需要使用正則表達式來匹配它們兩者。 我以為是這樣,但顯然不會運行:

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar (archivo&Transaction Report)

PD:我嘗試了使用\\ n的另一種解決方案,但是有什么方法可以重復獲得相同的結果嗎?

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar archivo\n

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar Transaction Report

如果您僅希望在“ Termino de procesar”之后使用“ archivo”和“ Transaction Report”,即沒有“ Termino de procesar Something Else”之類的東西。 您可以簡單地執行以下操作。

r"^.+Termino de procesar.+$"gm

演示

有效的做法是,只有在行中帶有“ Termino de procesar”一詞的情況下,才能從行的開頭到結尾獲得所有內容。

如果還有其他日志條目中包含“ Termino de procesar”,而您不希望使用的條目可以使用以下內容。

r"^.+Termino de procesar archivo.*$|^.+Termino de procesar Transaction Report.*$"gm

演示2

我發現簡單通常是最好的解決方案。 無需顯式選擇日期時間內容或“ ReporteClaro”,只需在捕獲之前使用全部捕獲即可。 更容易理解正則表達式imo。

編輯:您需要gm修飾符,除非您逐行閱讀它。

這將使他們成為一個整體,並且介於兩者之間。

(?s)[\d]+-[\d]+-[\d]+[ ][\d]+:[\d]+:[\d]+[ ]INFO[ ]ReporteClaro:[\d]+[ ]-[ ]Termino[ ]de[ ]procesar[ ](?:archivo|Transaction[ ]Report)(?:.*?[\d]+-[\d]+-[\d]+[ ][\d]+:[\d]+:[\d]+[ ]INFO[ ]ReporteClaro:[\d]+[ ]-[ ]Termino[ ]de[ ]procesar[ ](?:archivo|Transaction[ ]Report))*  

可讀版本

 (?s)

 [\d]+ - [\d]+ - [\d]+ [ ] [\d]+ : [\d]+ : [\d]+ [ ] INFO [ ] ReporteClaro: 
 [\d]+ [ ] - [ ] Termino [ ] de [ ] procesar [ ] 
 (?: archivo | Transaction [ ] Report )

 (?:
      .*? [\d]+ - [\d]+ - [\d]+ [ ] [\d]+ : [\d]+ : [\d]+ [ ] INFO [ ] ReporteClaro: 
      [\d]+ [ ] - [ ] Termino [ ] de [ ] procesar [ ] 
      (?: archivo | Transaction [ ] Report )
 )*

暫無
暫無

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

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