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

Susan Sarandon
發布: 2024-10-24 22:16:02
原創
742 人瀏覽過

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).
登入後複製

目標是捕捉兩個元件:

  • 「某些變更的文字」
  • 所有大寫行位於兩行下方它(不包括任何換行符)

已嘗試多種方法但未成功:

<code class="python">re.compile(r"^>(\w+)$$(\n[.$]+)^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # Just textlines</code>
登入後複製

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

<code class="python">re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)</code>
登入後複製

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

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

<code class="python">re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)</code>
登入後複製

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

以上是如何在Python中使用正規表示式來匹配多行塊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!