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
Lepaskan: 2024-12-06 04:13:17
asal
1005 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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