Bilakah Sempadan Perkataan Berlaku dalam Ungkapan Biasa PHP?

Linda Hamilton
Lepaskan: 2024-10-21 07:27:02
asal
155 orang telah melayarinya

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

Tetapi keputusan sebenar telah diterbalikkan:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match); // true
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match); // false
Salin selepas log masuk

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

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!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!