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!