」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在Python中使用正規表示式來匹配多行塊?

如何在Python中使用正規表示式來匹配多行塊?

發佈於2024-11-04
瀏覽:791

How to Match Multiline Blocks in Python Using Regular Expressions?

使用正規表示式來搭配多行區塊

使用Python 的正規表示式來符合跨多行的文字時,您可能會遇到困難。考慮以下範例文本:

some Varying TEXT

DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF
[more of the above, ending with a newline]
[yep, there is a variable number of lines here]

(repeat the above a few hundred times).

目標是捕獲兩個組成部分:

  • “some Varying TEXT”
  • 所有大寫行位於兩行在它下面(不包括任何換行符)

嘗試了幾種方法但沒有成功:

re.compile(r"^>(\w )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines

要解決此問題,請使用以下正規表示式:

re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)

請記住,錨點「^ ”和“$”不符換行符。因此,在多行模式下,「^」在換行符之後,「$」在換行符之前。

此外,請注意各種換行符號格式。對於可能包含換行符號、回車符號或兩者的文本,請使用以下更具包容性的正規表示式:

re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)

這裡不需要DOTALL 修飾符,因為點已經排除了換行符。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3