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!