ホームページ  >  記事  >  バックエンド開発  >  Python で正規表現を使用して複数行のテキスト ブロックをキャプチャする方法

Python で正規表現を使用して複数行のテキスト ブロックをキャプチャする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 04:34:02897ブラウズ

How to Capture Multiline Text Blocks with Regular Expressions in Python?

複数行のテキスト ブロックを一致させるための正規表現

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).

目標は、2 つのグループをキャプチャすることです。 1 つのキャプチャ グループ内の " 行と後続の大文字行 (改行なし)。

Lösungsansatz

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

Erläuterung

  • ^: 新しい行の先頭と一致します。
  • .: 改行を除く任意の文字と一致します。
  • : 1 つ以上の繰り返しと一致します。
  • n:改行文字と一致します。
  • (?:...) : 行内のパターンの複数の出現に一致する非キャプチャ グループを作成します。
  • () キャプチャ グループは 2 つの部分を囲みます。

Beispiel

text = "some Varying TEXT\nDSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]\n(repeat the above)."
match = re.match(r"^(.+)\n((?:\n.+)+)", text, re.MULTILINE)
print(match.group(1))  # "some Varying Text"
print(match.group(2))  # "DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]"

このアプローチでは、Python の re モジュールとその MULTILINE オプションを利用して、複数行のマッチングを有効にし、アンカーリングの問題を回避します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。