Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya memadankan subrentetan tertentu tanpa memasukkan aksara yang tidak diingini menggunakan regex tidak tamak dalam Python?
Ungkapan Biasa Tidak Tamak Python
Apabila berurusan dengan ungkapan biasa, operator * standard adalah tamak, bermakna ia cuba memadankan seberapa banyak daripada input yang mungkin. Walau bagaimanapun, terdapat senario di mana pendekatan tidak tamak diperlukan. Artikel ini meneroka penggunaan regex tidak tamak dalam Python, khususnya memfokuskan pada kes yang matlamatnya adalah untuk memadankan subrentetan tertentu tanpa memasukkan aksara yang tidak diingini.
Masalah
Pertimbangkan rentetan input berikut: "a (b) c (d) e"
Jika anda menggunakan biasa tamak standard ungkapan "(.)", Python akan memadankan "b) c (d". Ini kerana mengkuantifikasi ungkapan sebelumnya sebagai sifar atau lebih banyak kali dan tingkah laku tamak menyebabkannya sepadan sebanyak mungkin.
Penyelesaian
Untuk menjadikan regex tidak tamak, gunakan kelayakan ?. Ini memberitahu Python untuk memadankan ungkapan sesedikit mungkin, menghasilkan "(.?)" hanya sepadan dengan "b".
Python Pelaksanaan
import re input_string = "a (b) c (d) e" non_greedy_regex = r"(.*?)" match = re.search(non_greedy_regex, input_string) if match: print(match.group(1))
Output:
b
Kesimpulan
Kelayakan *? tidak tamak menyediakan cara yang mudah dan ringkas untuk mengawal tingkah laku ungkapan biasa dalam Python Dengan menyatakan bahawa padanan harus sesingkat mungkin, ia membolehkan anda tepat nyatakan subrentetan yang dikehendaki tanpa menyertakan aksara yang tidak diingini secara tidak sengaja.
Atas ialah kandungan terperinci Bagaimanakah saya memadankan subrentetan tertentu tanpa memasukkan aksara yang tidak diingini menggunakan regex tidak tamak dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!