ホームページ > バックエンド開発 > Python チュートリアル > Python で複数行のテキスト ブロックを正規表現と照合する方法

Python で複数行のテキスト ブロックを正規表現と照合する方法

Mary-Kate Olsen
リリース: 2024-10-25 10:25:17
オリジナル
691 人が閲覧しました

How to Match Multi-Line Text Blocks with Regular Expressions in Python?

Python で複数行のテキスト ブロックを正規表現と照合する

Python で複数行のテキストを扱う場合、正規表現の照合が困難になる場合があります。たとえば、「n」が改行を表す次のテキストについて考えてみましょう:

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].
ログイン後にコピー

目的は 2 つの要素をキャプチャすることです:

  • "some Varying TEXT"
  • 最初の要素の 2 行下で始まる大文字のテキストのすべての行を単一のキャプチャ グループとして (改行は後で削除できます)。

次の正規表現のバリエーションを使用した以前の試みは、次のとおりです。失敗:

re.compile(r"^>(\w+)$$(\[.$]+)^$", re.MULTILINE)
re.compile(r"(^[^>]\[\w\s]+)$", re.MULTILINE|re.DOTALL)
ログイン後にコピー

解決策:

複数行のテキストを正しく照合するには、次の正規表現を使用します:

re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
ログイン後にコピー

Thisパターンは以下に一致します:

  • グループ 1: "some Varying TEXT"
  • グループ 2: 2 行目で始まる大文字のテキストのすべての行"some Varying TEXT" の下の行

キーポイント:

  • ^ アンカーと $ アンカーは、それぞれ改行の直後と直前の位置に一致します。
  • ?: 演算子は、改行グループを非キャプチャーにします。
  • .* 量指定子は、1 行以上の大文字テキストをキャプチャします。

代替解決策:

ターゲット テキストに改行 (n) 以外の他の種類の改行が含まれる可能性がある場合は、次のより包括的なバージョンを使用します:

re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
ログイン後にコピー

以上がPython で複数行のテキスト ブロックを正規表現と照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート