Rumah > Artikel > pembangunan bahagian belakang > Bilakah Sempadan Perkataan Berlaku dalam Ungkapan Biasa PHP?
Semantik Sempadan Kata dalam Ungkapan Biasa PHP
Dalam PHP, sempadan perkataan dilaksanakan menggunakan aksara meta b, yang sepadan dengan peralihan antara aksara perkataan ( w) dan aksara bukan perkataan (W). Walau bagaimanapun, tingkah lakunya boleh diwarnakan, seperti yang ditunjukkan oleh kes ujian anda yang disediakan.
Sempadan Perkataan Tidak Dijangka
Dalam kes ujian anda, anda menjangkakan keputusan berikut:
preg_match("/(^|\b)@nimal/i", "something@nimal", $match); // false preg_match("/(^|\b)@nimal/i", "something!@nimal", $match); // true
Tetapi keputusan sebenar telah diterbalikkan:
preg_match("/(^|\b)@nimal/i", "something@nimal", $match); // true preg_match("/(^|\b)@nimal/i", "something!@nimal", $match); // false
Anomali ini berlaku kerana aksara meta b sepadan pada peralihan daripada aksara perkataan (w) kepada aksara bukan perkataan (W) . Dalam kes pertama, "sesuatu@haiwan," perkataan sempadan berlaku antara "g" (karakter perkataan) dan "@" (karakter bukan perkataan), yang membawa kepada padanan. Walau bagaimanapun, dalam kes kedua, "sesuatu!@nimal," tiada sempadan perkataan antara "!" dan "@" kerana kedua-duanya adalah aksara bukan perkataan.
Memastikan Permulaan Perkataan
Untuk memadankan perkataan yang bermula dengan urutan tertentu, anda perlu memastikan bahawa terdapat sempadan perkataan (b) sebelum urutan sasaran anda. Contohnya, untuk memadankan perkataan yang bermula dengan "@nimal", anda akan menggunakan regex berikut:
preg_match("/(\b)@nimal/i", "something@nimal", $match); // true preg_match("/(\b)@nimal/i", "something!@nimal", $match); // false
Dalam regex ini, sempadan perkataan (b) akan memastikan terdapat peralihan daripada aksara perkataan kepada aksara bukan perkataan sebelum "@nimal." Ini akan memadankan perkataan yang bermula dengan "@nimal", tetapi bukan perkataan yang mempunyai "@nimal" di tengah, seperti "ducat."
Atas ialah kandungan terperinci Bilakah Sempadan Perkataan Berlaku dalam Ungkapan Biasa PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!