簡體   English   中英

如何將某個字符串上下的文本行與另一個字符串匹配-RegEx

[英]How to match lines of text above and below a certain string up to another string - RegEx

如何使用Regex(python引擎)查找某個字符串,將其上方的幾行以及其后的所有文本匹配,直到另一個指定的字符串? 文本來自日志文件,幾乎所有值都是動態的。 我只找到一個常量字符串,它位於我要捕獲的塊的中間。 例如:

這是我不想匹配的文本行。

這是我要匹配的一行文本。

這是我要匹配的一行文本。

要匹配的字符串

我要捕獲的文本和數字行以及其他標記abc123:/()&。

我要捕獲的文本和數字行以及其他標記abc123:/()&。

我要捕獲的文本和數字行以及其他標記abc123:/()&。

字符串以結尾但不捕獲

我不想要的文字

我不想要的文字

我可能還應該注意,這些行中的大多數不僅可以包含文本,還可以包含數字和其他標點符號,我需要獲取所有這些內容。 如果有人能指出正確的方向,我將非常感謝您的幫助。 謝謝!

編輯

這是來自日志文件的真實示例,其中已刪除某些值:

Tue Oct  0 00:00:00 UTC 0000
A:REDACTED# REDACTED 7/1/8 


==============================================================

Ethernet Interface

===============================================================

Description        : REDACTED

Interface          : 0/0/0                      Oper Speed       : 10 Gbps

Link-level         : Ethernet                   Config Speed     : N/A

Admin State        : up                         Oper Duplex      : full

Oper State         : up                         Config Duplex    : N/A

Physical Link      : Yes                        MTU              : 2004

Single Fiber Mode  : No                         Min Frame Length : 64 Bytes

IfIndex            : REDACTED                  Hold time up     : 90 seconds

我需要使用“以太網接口”作為文本來捕獲除第一行和最后一行以外的所有內容。

我嘗試過這樣的事情: (?<=Ethernet Interface)(.*)(?=IfIndex)但這僅捕獲了我需要的后半部分。 如何添加第一部分?

嘗試以下模式: (?=(.+\\n){2}String to match)[\\w\\W]+(?=String to end on but NOT capture)

說明:它向前看 (?=(.+\\n){2}String to match) ,這意味着確保接下來是2行.+\\n (在這里您需要指定在字符串之前多少行)想要匹配)和String to match 如果為true,則開始匹配由[\\w\\W]+表示的每個字符,直到位置,然后是String to end but NOT capture ,這是通過(?=String to end on but NOT capture) (再次-正向前進)。

演示

暫無
暫無

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

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