Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python regex: Adakah Awalan \"r\" Wajib untuk Urutan Melarikan Diri?

Python regex: Adakah Awalan \"r\" Wajib untuk Urutan Melarikan Diri?

Susan Sarandon
Susan Sarandonasal
2024-10-19 17:03:31298semak imbas

Python regex: Is the

Python regex: Membongkar Mitos Awalan "r" Mandatori untuk Urutan Melarikan Diri

Soalan

Mengapa contoh pertama di bawah berfungsi tanpa awalan "r" sebelum urutan pelarian? Lazimnya dipercayai bahawa ia harus diwajibkan apabila berurusan dengan urutan pelarian.

<code class="python"># example 1
import re
print(re.sub('\s+', ' ', 'hello     there      there'))
# prints 'hello there there' - not expected as r prefix is not used</code>

Jawapan

Awalan "r" tidak selalu diperlukan dalam corak regex, walaupun peraturan umum yang mengesyorkannya gunakan.

Dalam urutan melarikan diri, garis miring ke belakang () berfungsi sebagai penunjuk untuk mentafsir jujukan aksara khas atau untuk melarikan watak dengan makna istimewa. Walau bagaimanapun, bukan semua jujukan yang didahului oleh garis miring belakang dianggap jujukan melarikan diri yang sah.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

  • 'n' ialah jujukan melarikan diri yang sepadan dengan baris baharu watak.
  • r'n' ialah rentetan mentah tersurat di mana garis miring ke belakang dikekalkan sebagai aksara literal dan 'n' tidak ditafsirkan sebagai urutan melarikan diri.

Apabila awalan "r" tidak hadir sebelum jujukan melarikan diri, Python mentafsirnya hanya jika jujukan melarikan diri yang diiktiraf. Dalam erti kata lain, ia tidak akan cuba untuk mentafsir urutan pelarian yang tidak sah seperti 's'.

Tingkah laku ini boleh diperhatikan dalam contoh pertama yang disediakan:

  • 's' bukan jujukan melarikan diri yang sah.
  • Awalan "r" tiada.
  • Enjin regex mentafsir s sebagai aksara literal, bukan sebagai jujukan melarikan diri untuk ruang putih.
  • Akibatnya, corak itu sepadan dan menggantikan satu atau lebih aksara ruang dengan satu ruang.

Walau bagaimanapun, apabila awalan "r" digunakan, semua aksara dalam corak ditafsir secara literal. Ini bermakna r's' mewakili aksara garis miring ke belakang literal diikuti dengan huruf 's'.

Keterbatasan dan Perangkap

Walaupun awalan "r" tidak diperlukan dengan ketat untuk semua jujukan melarikan diri, ia secara amnya disyorkan untuk menggunakannya, terutamanya apabila bekerja dengan corak kompleks yang merangkumi berbilang urutan pelarian. Ini membantu mengelakkan kekeliruan dan akibat yang tidak diingini.

Atas ialah kandungan terperinci Python regex: Adakah Awalan \"r\" Wajib untuk Urutan Melarikan Diri?. 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