Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Python Saya Tidak `re.search()` Cari Sempadan Perkataan Menggunakan `\b`?

Mengapa Python Saya Tidak `re.search()` Cari Sempadan Perkataan Menggunakan `\b`?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 04:13:171006semak imbas

Why Doesn't My Python `re.search()` Find Word Boundaries Using `b`?

Word Boundary (b) Sokongan dalam Ungkapan Biasa

Dalam Python, ungkapan biasa boleh digunakan untuk mencari dan memadankan corak dalam rentetan. Semasa meneroka ungkapan biasa, anda mungkin perasan cadangan untuk memanfaatkan ungkapan b untuk memadankan sempadan perkataan. Walau bagaimanapun, terdapat keadaan di mana pendekatan ini mungkin menghasilkan hasil yang tidak dijangka.

Isunya

Pertimbangkan coretan Python berikut:

x = 'one two three'
y = re.search("\btwo\b", x)

Dijangka, kod ini harus mengembalikan objek padanan jika padanan ditemui dalam rentetan. Walau bagaimanapun, ia secara mengejutkan mengembalikan Tiada. Ini menimbulkan persoalan: adakah modul Python semula tidak menyokong penggunaan b untuk memadankan sempadan perkataan?

Penyelesaian

Isu dalam coretan yang diberikan terletak pada penggunaan rentetan biasa. Untuk ungkapan biasa berfungsi dengan betul, adalah penting untuk menggunakan rentetan mentah. Rentetan mentah dilambangkan dengan memberi awalan rentetan dengan 'r', seperti yang dilihat di bawah:

x = 'one two three'
y = re.search(r"\btwo\b", x)

Mengubah suai rentetan kepada rentetan mentah menyelesaikan isu dan kod itu berjaya mengembalikan objek padanan.

Pendekatan Alternatif

Pendekatan alternatif untuk memadankan sempadan perkataan ialah dengan menggunakan fungsi re.compile(). Fungsi ini membolehkan anda mentakrifkan objek ungkapan biasa yang boleh digunakan semula untuk berbilang carian, berpotensi meningkatkan kecekapan.

word = 'two'
k = re.compile(r'\b%s\b' % word, re.I)
x = 'one two three'
y = k.search(x)

Dalam kes ini, pembolehubah k mewakili objek ungkapan biasa yang disusun dan y mengandungi padanan objek. Menggunakan re.compile() menawarkan fleksibiliti dan faedah prestasi, menjadikannya pilihan yang sesuai untuk senario ekspresi biasa yang kompleks.

Atas ialah kandungan terperinci Mengapa Python Saya Tidak `re.search()` Cari Sempadan Perkataan Menggunakan `\b`?. 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