Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `re.findall()` Mengendalikan Padanan Bertindih dalam Ungkapan Biasa?
Memahami Padanan Bertindih Regex
Apabila menggunakan re.findall() untuk memadankan ungkapan biasa, memahami cara padanan bertindih dikendalikan adalah penting. Secara lalai, re.findall() mengembalikan padanan tidak bertindih.
Kajian Kes: hello dan ww
Pertimbangkan corak berikut:
>>> match = re.findall(r'\w\w', 'hello') >>> print match ['he', 'll']
Seperti yang dijangkakan, corak ini sepadan dengan jujukan dua aksara. Walau bagaimanapun, ia tidak sepadan dengan 'el' atau 'lo' kerana masing-masing bertindih dengan 'dia' dan 'll'.
Perlawanan Bertindih dengan Penegasan Pandang Ke Hadapan
Untuk mencari padanan bertindih, penegasan pandang ke hadapan boleh digunakan. Penegasan pandang ke hadapan, dilambangkan dengan (?=...), mengesahkan sama ada corak tertentu wujud seterusnya tanpa menggunakan rentetan input.
Menggunakan konsep ini, ungkapan berikut berjaya menangkap padanan bertindih dan tidak bertindih:
>>> re.findall(r'(?=(\w\w))', 'hello') ['he', 'el', 'll', 'lo']
Coraknya kini berbunyi: "cari mana-mana lokasi di mana perkataan dua aksara mengikut." Ini memastikan semua jujukan padanan yang mungkin, termasuk urutan bertindih dan tidak bertindih, ditangkap.
Atas ialah kandungan terperinci Bagaimanakah `re.findall()` Mengendalikan Padanan Bertindih dalam Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!