Rumah > Artikel > pembangunan bahagian belakang > Mengapa re.sub Hanya Menggantikan Kejadian Pertama Apabila Menggunakan Bendera re.MULTILINE?
Isu Penggantian Tidak Dijangka Python re.sub
Dokumentasi Python menyatakan bahawa bendera re.MULTILINE membenarkan aksara ^ dalam ungkapan biasa untuk padankan pada permulaan setiap baris. Walau bagaimanapun, apabila menggunakan bendera ini dengan fungsi re.sub, pengguna mungkin menghadapi gelagat yang tidak dijangka di mana hanya kejadian pertama corak diganti.
Punca Asas:
Isu timbul kerana bendera re.MULTILINE digunakan secara tidak betul. Argumen keempat re.sub bertujuan untuk parameter kiraan, yang menentukan bilangan maksimum penggantian untuk dilakukan. Menggunakan re.MULTILINE sebagai nilai kiraan dan bukannya bendera membawa kepada hasil yang salah.
Penyelesaian:
Untuk menyelesaikan isu ini, terdapat dua pilihan:
re.sub('^//', '', s, flags=re.MULTILINE)
Dengan menyatakan flags=re.MULTILINE, anda secara eksplisit menetapkan bendera re.MULTILINE, memastikan bahawa ia adalah digunakan seperti yang dimaksudkan.
re.sub(re.compile('^//', re.MULTILINE), '', s)
Menyusun ungkapan biasa dengan bendera re.MULTILINE memastikan bahawa bendera digunakan pada corak dengan betul.
Menggunakan salah satu daripada kaedah ini akan membenarkan re.sub menggantikan semua kejadian corak, seperti yang dijangkakan dengan bendera re.MULTILINE.
Atas ialah kandungan terperinci Mengapa re.sub Hanya Menggantikan Kejadian Pertama Apabila Menggunakan Bendera re.MULTILINE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!