Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Ungkapan Biasa Boleh Memadankan Keseluruhan Perkataan dalam Rentetan dengan Cekap?
Memadankan Seluruh Perkataan Secara Dinamik dalam Rentetan Menggunakan Ungkapan Biasa
Untuk menentukan sama ada sesuatu perkataan wujud dalam ayat, ungkapan biasa boleh digunakan. Memandangkan perkataan lazimnya dipisahkan oleh ruang tetapi boleh mempunyai tanda baca di kedua-dua belah pihak, adalah penting untuk mengelakkan padanan perkataan separa.
Satu pendekatan melibatkan penentuan corak regex yang berasingan untuk perkataan yang muncul di tengah, permulaan dan akhir rentetan seperti berikut:
match_middle_words = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d ]{0,} " match_starting_word = "^[^a-zA-Z\d]{0,}" + word + "[^a-zA-Z\d ]{0,} " match_end_word = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d]{0,}$"
Walau bagaimanapun, ini memerlukan penentuan dan penggabungan berbilang corak regex. Pendekatan yang lebih mudah ialah memanfaatkan sempadan perkataan (b):
match_string = r'\b' + word + r'\b'
Corak ini memastikan perkataan itu hanya ditangkap apabila ia dikelilingi oleh aksara bukan perkataan. Untuk senarai perkataan (cth., dalam 'perkataan' berubah-ubah), gunakan:
match_string = r'\b(?:{})\b'.format('|'.join(words))
Kaedah ini berkesan memastikan penangkapan keseluruhan perkataan tanpa memerlukan berbilang corak.
Nota pada Sempadan Perkataan
Untuk senario yang lebih kompleks yang melibatkan perkataan dengan aksara khas atau di mana sempadan perkataan berbeza daripada ruang, takrifan sempadan alternatif boleh digunakan. Sempadan perkataan yang tidak jelas tidak termasuk perkataan yang bermula/berakhir dengan aksara khas:
match_string = r'(?<!\w){}(?!\w)'.format(re.escape(word))
Sempadan ruang putih menganggap ruang dan rentetan permulaan/akhir sebagai sempadan perkataan:
match_string = r'(?<!\S){}(?!\S)'.format(word)
Dengan menggunakan teknik ini, pemadanan keseluruhan perkataan dalam rentetan boleh dipermudahkan, memastikan hasil yang tepat dan konsisten.
Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Memadankan Keseluruhan Perkataan dalam Rentetan dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!