簡體   English   中英

python 中的正則表達式多行匹配

[英]regex multiline matching in python

我想過濾“這里是一個樣本”以及之后的所有行,直到2 個新行

這是我的文件(您可以將其用作日志文件):

here is a sample text
random line1


here is a sample text
random line2
random line3
random line4


should not match
random line 6


here is a sample 
random line 5

我試過了:

    \r?\n?(here is a sample).*\r?\n?(.*)

這樣,如果我再次執行最后一部分'\r?\n?(.*)' ,我只會過濾下一行,我會得到另一行..

我的問題。 我需要什么正則表達式才能匹配所有行,直到我看到 2 個新行

如果你想匹配所有直到你有 2 個換行符,但如果沒有 2 個換行符也想匹配最后一次出現:

^here is a sample.*(?:\n(?!\n).*)*

模式匹配:

  • ^字符串開頭
  • here is a sample.*匹配字面意思和該行的 rest
  • (?:非捕獲組作為一個整體重復
    • \n(?!\n)匹配一個換行符,並斷言它后面不直接跟一個換行符
    • .*匹配線的rest
  • )*關閉非捕獲組並選擇性地重復它

正則表達式演示

如果應該存在 2 個換行符,您可以為要保留的部分使用捕獲組,並匹配 2 個換行符以確保它們存在。

^(here is a sample.*(?:\n(?!\n).*)*)\n\n

正則表達式演示

暫無
暫無

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

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