Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bilakah Sempadan Perkataan Berlaku dalam Ungkapan Biasa PHP?

Bilakah Sempadan Perkataan Berlaku dalam Ungkapan Biasa PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 07:27:02157semak imbas

When Do Word Boundaries Occur in PHP Regular Expressions?

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!

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