Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memadankan Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python?
Memadankan Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python
Dalam Python, pemadanan regex boleh mencabar apabila berurusan dengan teks berbilang baris . Sebagai contoh, pertimbangkan teks berikut dengan "n" mewakili baris baharu:
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 elemen:
Percubaan sebelumnya menggunakan variasi ungkapan biasa berikut telah tidak berjaya:
re.compile(r"^>(\w+)$$(\[.$]+)^$", re.MULTILINE) re.compile(r"(^[^>]\[\w\s]+)$", re.MULTILINE|re.DOTALL)
Penyelesaian:
Untuk memadankan teks berbilang baris dengan betul, gunakan ungkapan biasa berikut:
re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
Ini corak sepadan dengan yang berikut:
Inti Utama:
Penyelesaian Alternatif:
Jika teks sasaran mungkin mengandungi jenis baris baharu yang lain selain suapan baris (n), gunakan versi yang lebih inklusif berikut:
re.compile(r"^(.+)(?:\n|\r\n?)((?:(?:\n|\r\n?).+)+)", re.MULTILINE)
Atas ialah kandungan terperinci Bagaimana untuk Memadankan Blok Teks Berbilang Baris dengan Ungkapan Biasa dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!