Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menangkap Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python?

Bagaimana untuk Menangkap Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-25 04:34:02902semak imbas

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

Ungkapan Biasa untuk Memadankan Blok Teks Berbilang Baris

Dalam Python, pemadanan teks merentas berbilang baris mungkin mencabar. Artikel ini menyediakan penyelesaian ringkas untuk menangkap blok berbilang baris dan kumpulan baris yang berkaitan dengannya.

Pertimbangkan format teks berikut:

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

Matlamatnya ialah untuk menangkap dua kumpulan: "beberapa TEKS Bervariasi " baris dan baris huruf besar seterusnya (tanpa baris baharu) dalam satu kumpulan tangkapan.

Lösungsansatz

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

Erläuterung

  • ^: Padan dengan permulaan baris baharu.
  • .: Padan dengan mana-mana watak kecuali baris baharu.
  • : Padan dengan satu atau lebih ulangan.
  • n: Padan dengan watak baris baharu.
  • (?:...) : Mencipta kumpulan bukan menangkap yang sepadan dengan berbilang kejadian corak dalam baris.
  • () Kumpulan tangkap menyertakan dua bahagian perlawanan.

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]"

Pendekatan ini menggunakan modul semula Python dan pilihan MULTILINEnya untuk membolehkan padanan berbilang baris dan mengelakkan masalah berlabuh.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn