Memahami Corak Regex Tidak Tamak dalam Python
Dalam Python, ungkapan biasa memainkan peranan penting dalam pemprosesan teks. Secara lalai, corak regex adalah tamak, bermakna ia menggunakan sebanyak mungkin input. Walau bagaimanapun, keadaan tertentu memerlukan pendekatan yang tidak tamak, di mana coraknya sepadan dengan input yang paling tidak mungkin.
Cabaran: Memadankan Input Minimum
Pertimbangkan rentetan "a ( b) c (d) e" dan regex "(.*)". Biasanya, "." akan sepadan dengan keseluruhan subrentetan "b) c (d". Walau bagaimanapun, dalam senario ini, kami menyasarkan untuk memadankan "b" sahaja, tidak termasuk kurungan penutup.
Memperkenalkan Non-Greedy Quantifier
Python menyediakan cara untuk mencipta corak tidak tamak menggunakan "?" pada pengkuantiti seperti * (sifar atau lebih kejadian). atau lebih banyak kejadian), kami mengarahkan corak untuk memadankan teks sesedikit mungkin.
Menggunakan Penyelesaian Tidak Tamak
Untuk masalah kami, regex ".?" akan sepadan dengan "b" kerana ia menemui kurungan penutup sejurus selepas "b" dan tidak menggunakan aksara lagi. Ini berbeza dengan regex asal "(.)", yang akan sepadan sehingga penghujung rentetan.
Memahami Kuasa "?"
Kelayakan "?" tidak terhad kepada kurungan yang sepadan Ia boleh digunakan dengan mana-mana pengkuantiti untuk mengehadkan corak ketamakan. Contohnya, "(.* ?)" akan sepadan dengan siri terpendek berturut-turut bagi aksara bukan kurungan.
Faedah Regeks Tidak Tamak
Bukan- corak tamak menawarkan beberapa kelebihan:
Dengan memahami keupayaan regex tidak tamak, pembangun boleh mencipta penyelesaian pemprosesan teks yang lebih cekap dan tepat dalam Python.
Atas ialah kandungan terperinci Bagaimanakah anda membuat ungkapan biasa dalam Python sepadan dengan input yang paling sedikit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!