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!