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

Patricia Arquette
Lepaskan: 2024-11-20 00:11:02
asal
854 orang telah melayarinya

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,} "
Salin selepas log masuk

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,}$"
Salin selepas log masuk

Dengan menggabungkan corak ini, kami memperoleh rentetan berikut:

match_string = match_middle_words  + "|" + match_starting_word  +"|" + match_end_word 
Salin selepas log masuk

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

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

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

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!

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