Mengapa re.sub Hanya Menggantikan Kejadian Pertama Apabila Menggunakan Bendera re.MULTILINE?

Linda Hamilton
Lepaskan: 2024-11-06 03:14:02
asal
832 orang telah melayarinya

Why is re.sub Only Replacing the First Occurrence When Using re.MULTILINE Flag?

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:

  1. Gunakan Argumen Bernama:
re.sub('^//', '', s, flags=re.MULTILINE)
Salin selepas log masuk

Dengan menyatakan flags=re.MULTILINE, anda secara eksplisit menetapkan bendera re.MULTILINE, memastikan bahawa ia adalah digunakan seperti yang dimaksudkan.

  1. Kompilasi Ungkapan Biasa Dahulu:
re.sub(re.compile('^//', re.MULTILINE), '', s)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!