Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencapai Padanan Kompak Tidak Tamak dalam Python Regex?
Padanan Padat Tidak Tamak dalam Regeks Python
Pertimbangkan keperluan untuk padanan regex yang menangkap bahagian terkecil rentetan yang mungkin. Bagaimanakah pendekatan tamak lalai Python, yang menangkap subrentetan maksimum, boleh diperbetulkan?
Penyelesaian terletak pada pengendali padanan tidak tamak, ?, yang mengarahkan Python untuk menangkap jumlah teks minimum yang mungkin. Untuk menggambarkan fleksibilitinya, pertimbangkan regex "(.)" digunakan pada rentetan "a (b) c (d) e". Biasanya, ia akan menangkap "b) c (d", merangkumi keseluruhan ungkapan bersarang.
Namun, dengan menggunakan kelayakan bukan tamak ?, regex diubah suai "(.?) " sebaliknya menangkap "b" yang dikehendaki. Ini kerana ?* mengarahkan Python untuk memadankan teks sesedikit mungkin, mengutamakan padanan segera "b" dan bukannya berkembang kepada kumpulan yang lebih besar.
Dokumentasi Python rasmi mengenai Greedy versus Non-Greedy menyatakan bahawa kelayakan yang tidak tamak "padanan dengan teks sesedikit mungkin." dilema untuk menangkap subrentetan ringkas optimum, pengendali yang tidak tamak ?* muncul sebagai penyelesaian muktamad, membenarkan ungkapan regex yang ringkas dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Padanan Kompak Tidak Tamak dalam Python Regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!