Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memadankan Seluruh Perkataan Secara Dinamik dalam Rentetan Menggunakan Ungkapan Biasa?

Bagaimanakah Saya Boleh Memadankan Seluruh Perkataan Secara Dinamik dalam Rentetan Menggunakan Ungkapan Biasa?

Patricia Arquette
Patricia Arquetteasal
2024-11-20 00:11:02890semak imbas

How Can I Dynamically Match Whole Words in Strings Using Regular Expressions?

Padankan Seluruh Perkataan Secara Dinamik dalam Rentetan Menggunakan Regex

Untuk memadankan keseluruhan perkataan dalam rentetan, kita boleh menggunakan ungkapan biasa dinamik. Pertimbangkan senario berikut:

Perkataan dalam ayat dipisahkan dengan ruang, tetapi tanda baca mungkin muncul di kedua-dua belah pihak. Untuk mengenal pasti perkataan di tengah rentetan, corak berikut berkesan menghalang padanan perkataan separa dan membenarkan tanda baca:

match_middle_words = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d ]{0,} "

Walau bagaimanapun, corak ini gagal padan dengan perkataan pertama atau terakhir kerana ketiadaan pendahuluan atau ruang belakang. Untuk menangani perkara ini, kita boleh menggunakan corak tambahan:

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,}$"

Dengan menggabungkan corak ini, kami memperoleh rentetan berikut:

match_string = match_middle_words  + "|" + match_starting_word  +"|" + match_end_word 

Pendekatan ini memastikan bahawa perkataan ditangkap hanya apabila ia dikelilingi oleh aksara bukan perkataan. Tambahan pula, ia mengendalikan perkataan pada permulaan dan akhir rentetan.

Untuk memudahkan proses ini, kita boleh memanfaatkan sempadan perkataan, dilambangkan dengan b. Sempadan ini sepadan pada permulaan dan akhir rentetan, menghapuskan keperluan untuk corak berasingan untuk perkataan pertama dan terakhir. Corak berikut dengan cekap sepadan dengan keseluruhan perkataan:

match_string = r'\b' + word + r'\b'

Corak ini boleh diubah suai dengan mudah untuk memadankan senarai perkataan:

words_list = ['word1', 'word2', 'word3']
match_string = r'\b(?:{})'.format('|'.join(words_list))

Dengan menggunakan sempadan perkataan, kami menghapuskan keperluan untuk tiga memisahkan corak dan memudahkan proses memadankan keseluruhan perkataan dalam rentetan menggunakan regex dinamik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadankan Seluruh Perkataan Secara Dinamik dalam Rentetan Menggunakan Ungkapan Biasa?. 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