Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Menggantikan Padanan dengan Kumpulan Bernombor dengan Betul dalam re.sub Python?

Bagaimana Menggantikan Padanan dengan Kumpulan Bernombor dengan Betul dalam re.sub Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 17:45:03989semak imbas

How to Properly Replace Matches with Numbered Groups in Python's re.sub?

Python RE.Sub Group: Penomboran Selepas Nombor

Apabila menggunakan ungkapan biasa dalam Python, kaedah re.sub boleh digunakan untuk menggantikan padan dengan rentetan gantian. Walau bagaimanapun, sintaks boleh menjadi rumit apabila bekerja dengan kumpulan bernombor.

Percubaan Disalahtafsir:

Pada mulanya, anda boleh mencuba:

<code class="python">re.sub(r'(foo)', r'23', 'foobar')</code>

Menjangkakan output menjadi 'foo123bar', tetapi sebaliknya, ia mengembalikan 'J3bar', menggantikan 'foo' dengan 'J3' atas sebab yang mungkin tidak jelas serta-merta.

Sintaks yang Betul:

Untuk menggantikan 'foo' dengan tepat dengan 'foo123', gunakan sintaks berikut:

<code class="python">re.sub(r'(foo)', r'\g<1>123', 'foobar')</code>

Berikut ialah penjelasan terperinci:

  • Ungkapan biasa ( foo) menangkap subrentetan 'foo'.
  • Rentetan gantian g<1>123 merujuk subrentetan yang ditangkap dan menambahkan "123" padanya.
  • g<1> ialah rujukan kumpulan bernombor, di mana '<1>' mewakili kumpulan pertama yang ditangkap.

Petikan Dokumentasi:

Menurut dokumentasi, sintaks g atau g digunakan untuk:

Selain melarikan diri watak dan rujukan belakang ... g akan menggunakan subrentetan yang dipadankan dengan nama kumpulan yang dinamakan, seperti yang ditakrifkan oleh sintaks (?P...). g menggunakan nombor kumpulan yang sepadan.

Atas ialah kandungan terperinci Bagaimana Menggantikan Padanan dengan Kumpulan Bernombor dengan Betul dalam re.sub Python?. 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