[英]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.