Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencapai Padanan Kompak Tidak Tamak dalam Python Regex?

Bagaimanakah Saya Boleh Mencapai Padanan Kompak Tidak Tamak dalam Python Regex?

Susan Sarandon
Susan Sarandonasal
2024-11-09 03:05:02534semak imbas

How Can I Achieve Compact Non-Greedy Matching in Python Regexes?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn