Ungkapan Biasa Pengenalan dan Sintaks

Mengapa menggunakan ungkapan biasa?

Operasi carian dan penggantian biasa memerlukan anda memberikan teks tepat yang sepadan dengan hasil carian yang dijangkakan. Walaupun teknik ini mungkin mencukupi untuk melakukan carian mudah dan menggantikan tugas pada teks statik, kekurangan fleksibiliti menjadikan pencarian teks dinamik sukar, jika tidak mustahil, dengan cara ini.

Dengan menggunakan ungkapan biasa, anda boleh:

1.
Sebagai contoh, anda boleh menguji rentetan input untuk melihat sama ada corak nombor telefon atau corak nombor kad kredit berlaku dalam rentetan. Ini dipanggil pengesahan data.

2.
Ekspresi biasa boleh digunakan untuk mengenal pasti teks tertentu dalam dokumen, mengalih keluar teks itu sepenuhnya atau menggantikannya dengan teks lain.

3. Ekstrak subrentetan daripada rentetan berdasarkan padanan corak.
Anda boleh mencari teks tertentu dalam dokumen atau medan input.

Sebagai contoh, anda mungkin perlu mencari seluruh tapak, mengalih keluar bahan lapuk dan menggantikan teg pemformatan HTML tertentu. Dalam kes ini, ungkapan biasa boleh digunakan untuk menentukan sama ada bahan ini atau teg pemformatan HTML ini berlaku dalam setiap fail. Proses ini mengecilkan senarai fail yang terjejas kepada fail yang mengandungi bahan yang perlu dialih keluar atau diubah. Ungkapan biasa kemudiannya boleh digunakan untuk mengalih keluar bahan lapuk. Akhir sekali, ungkapan biasa boleh digunakan untuk mencari dan menggantikan teg.

Ungkapan biasa - Sintaks

Ungkapan biasa (ungkapan biasa) menerangkan corak padanan rentetan, yang boleh digunakan untuk menyemak sama ada rentetan mengandungi subrentetan tertentu dan subrentetan yang sepadan Gantikan rentetan atau ekstrak subrentetan yang memenuhi syarat tertentu daripada rentetan, dsb.

Apabila menyenaraikan direktori, *.txt dalam dir *.txt atau ls *.txt bukan ungkapan biasa, kerana makna * di sini berbeza daripada * dalam ungkapan biasa.

Membina ungkapan biasa adalah sama seperti mencipta ungkapan matematik. Iaitu, ungkapan kecil boleh digabungkan bersama untuk mencipta ungkapan yang lebih besar menggunakan pelbagai metakarakter dan pengendali. Komponen ungkapan biasa boleh menjadi satu aksara, koleksi aksara, julat aksara, pilihan antara aksara atau mana-mana gabungan semua komponen ini.

Ungkapan biasa ialah corak literal yang terdiri daripada aksara biasa (seperti aksara a hingga z) dan aksara khas (dipanggil "metacharacters"). Corak menerangkan satu atau lebih rentetan untuk dipadankan semasa mencari teks. Ungkapan biasa berfungsi sebagai templat yang sepadan dengan corak aksara dengan rentetan yang dicari.

Aksara biasa

Aksara biasa termasuk semua aksara boleh cetak dan tidak boleh cetak yang tidak dinyatakan secara eksplisit sebagai aksara meta. Ini termasuk semua huruf besar dan huruf kecil, semua nombor, semua tanda baca dan beberapa simbol lain.

Aksara bukan cetak

Aksara bukan cetak juga boleh menjadi sebahagian daripada ungkapan biasa. Jadual berikut menyenaraikan urutan melarikan diri yang mewakili aksara bukan pencetakan:

Watak Penerangan

cx Padanan x Yang dinyatakan watak kawalan. Contohnya, cM memadankan watak Control-M atau carriage return. Nilai x mestilah salah satu daripada A-Z atau a-z. Jika tidak, c dianggap sebagai aksara 'c' literal.

f sepadan dengan suapan borang. Bersamaan dengan x0c dan cL.

n sepadan dengan watak baris baharu. Bersamaan dengan x0a dan cJ.

r sepadan dengan watak pemulangan kereta. Bersamaan dengan x0d dan cM.

s sepadan dengan mana-mana aksara ruang putih, termasuk ruang, tab, suapan borang, dsb. Bersamaan dengan [fnrtv].

S sepadan dengan mana-mana aksara bukan ruang putih. Bersamaan dengan [^ fnrtv].

t sepadan dengan watak tab. Bersamaan dengan x09 dan cI.

v sepadan dengan aksara tab menegak. Bersamaan dengan x0b dan cK.

Watak istimewa

Apa yang dipanggil watak istimewa ialah watak dengan makna istimewa, seperti * dalam "*.txt" yang dinyatakan di atas , secara ringkasnya, bermaksud maksud sebarang rentetan. Jika anda ingin mencari fail dengan * dalam nama fail, anda perlu melepaskan *, iaitu, tambah satu di hadapannya. ls*.txt.

Banyak aksara meta memerlukan layanan istimewa apabila cuba memadankannya. Untuk memadankan watak-watak istimewa ini, anda mesti "melarikan diri" dahulu daripada watak-watak tersebut, iaitu, mendahuluinya dengan aksara sengkang ke belakang (). Jadual berikut menyenaraikan aksara khas dalam ungkapan biasa:

Watak Khas Penerangan

$ Padan dengan aksara input kedudukan hujung tali. Jika sifat Multiline objek RegExp ditetapkan, $ juga sepadan dengan 'n' atau 'r'. Untuk memadankan aksara $ itu sendiri, gunakan $.

( ) Menandakan permulaan dan akhir subungkapan. Subungkapan boleh diperolehi untuk kegunaan kemudian. Untuk memadankan aksara ini, gunakan ( dan ).

* Padan dengan subungkapan sebelumnya sifar atau lebih kali. Untuk memadankan aksara *, gunakan *.

+ Memadankan subungkapan sebelumnya satu kali atau lebih. Untuk memadankan aksara +, gunakan +.

Memadankan mana-mana watak tunggal kecuali watak baris baharu n. Untuk memadankan ., gunakan .

[ Menandakan permulaan ungkapan kurungan segi empat sama. Untuk memadankan [, gunakan [.

? Padan dengan subungkapan sebelumnya sifar atau sekali, atau menentukan kelayakan bukan tamak. Untuk memadankan watak ?, gunakan ?.

Tandakan watak seterusnya sebagai sama ada watak istimewa, aksara literal, rujukan ke belakang atau watak pelarian oktal. Contohnya, 'n' sepadan dengan aksara 'n'. 'n' sepadan dengan watak baris baharu. Urutan '\' sepadan dengan "", manakala '(' sepadan dengan "(".

^ sepadan dengan permulaan rentetan input, melainkan digunakan dalam ungkapan kurungan segi empat sama, dalam hal ini ia menunjukkan bahawa aksara itu adalah tidak diterima Koleksi Untuk memadankan watak ^ itu sendiri, gunakan ^ Untuk memadankan |, gunakan | digunakan untuk menyatakan bahawa komponen tertentu bagi ungkapan biasa mesti Berapa kali ia mesti kelihatan memenuhi padanan Terdapat 6 jenis kelayakan ungkapan biasa: * atau + atau ? m} ". dan "zoo". * Bersamaan dengan {0,}.

+ sepadan dengan subungkapan sebelumnya satu kali atau lebih. Contohnya, 'zo+' sepadan dengan "zo" dan " zoo ", tetapi tidak boleh sepadan dengan "z". + Bersamaan dengan {1,}.

? Padan dengan subungkapan sebelumnya sifar atau sekali. Contohnya, "do(es)?" sepadan dengan "do " atau "do" dalam "does".? Bersamaan dengan {0,1}. {n} n ialah integer bukan negatif Sebagai contoh, 'o{2} ​​' tidak boleh sepadan dengan '. o' dalam "Bob", tetapi boleh memadankan dua o dalam "makanan" .

{n,} n ialah integer bukan negatif. Padankan sekurang-kurangnya n kali. Contohnya, 'o{2,}' tidak sepadan dengan 'o' dalam "Bob", tetapi ia sepadan dengan semua o dalam "foooood". 'o{1,}' bersamaan dengan 'o+'. 'o{0,}' bersamaan dengan 'o*'.

{n,m} m dan n kedua-duanya adalah integer bukan negatif, dengan n <= m. Padankan sekurang-kurangnya n kali dan paling banyak m masa. Contohnya, "o{1,3}" akan sepadan dengan tiga o pertama dalam "fooooood". 'o{0,1}' bersamaan dengan 'o?'. Sila ambil perhatian bahawa tidak boleh ada ruang antara koma dan dua nombor.

Memandangkan bilangan bab mungkin akan melebihi sembilan dalam dokumen input yang besar, anda memerlukan cara untuk mengendalikan nombor bab dua atau tiga digit. Kelayakan memberi anda keupayaan ini. Ungkapan biasa berikut sepadan dengan tajuk bab dengan sebarang bilangan digit:

/Bab [1-9][0-9]*/

Ambil perhatian bahawa kelayakan muncul selepas ungkapan julat. Oleh itu, ia digunakan pada keseluruhan ungkapan julat, dalam kes ini, hanya nombor daripada 0 hingga 9 termasuk.

Kelayakan + tidak digunakan di sini kerana tidak semestinya ada keperluan untuk mempunyai nombor di kedudukan kedua atau seterusnya. Jangan gunakannya juga? aksara kerana ia mengehadkan nombor bab kepada dua digit sahaja. Anda perlu memadankan sekurang-kurangnya satu nombor selepas Bab dan aksara ruang.

Jika anda tahu bahawa nombor bab dihadkan kepada 99 bab sahaja, anda boleh menggunakan ungkapan berikut untuk menentukan sekurang-kurangnya satu tetapi paling banyak dua digit.

/Bab [0-9]{1,2}/

Kelemahan ungkapan di atas ialah ia masih hanya sepadan dengan nombor bab yang lebih besar daripada 99 Dua digit pertama. Kelemahan lain ialah Bab 0 juga akan sepadan. Ungkapan yang lebih baik untuk memadankan dua digit sahaja ialah:

/Bab [1-9][0-9]?/

atau

/Bab [1-9][0-9]{0,1}/

*, + dan ? semuanya tamak, Memandangkan mereka sepadan sebagai banyak perkataan yang mungkin, padanan tidak tamak atau minimum boleh dicapai dengan hanya menambah ?

Sebagai contoh, anda mungkin mencari dokumen HTML untuk tajuk bab yang disertakan dalam teg H1. Teks kelihatan seperti ini dalam dokumen anda:

<H1>Bab 1 – Pengenalan kepada Ungkapan Biasa</H1>

Ungkapan berikut sepadan dengan Semuanya daripada tanda kurang daripada pembukaan (<) kepada tanda lebih besar daripada teg H1 penutup (>).

/<.*>/

Jika anda hanya perlu memadankan teg H1 pembukaan, ungkapan "tidak tamak" berikut hanya sepadan <H1>.

/<.*?>/

Ungkapan berubah daripada "tamak" kepada "tamak" dengan meletakkan ? ? Ungkapan kelayakan ditukar kepada ungkapan "tidak tamak" atau padanan minimum.

pencari

Pencari

membolehkan anda menyemat ungkapan biasa pada permulaan atau penghujung baris. Ia juga membolehkan anda membuat ungkapan biasa yang muncul dalam perkataan, pada permulaan perkataan, atau pada akhir perkataan. Pencari

digunakan untuk menerangkan sempadan rentetan atau perkataan, ^ dan $ merujuk kepada permulaan dan penghujung rentetan masing-masing, b menerangkan sempadan depan atau belakang perkataan, dan B mewakili a sempadan bukan perkataan.

Kelayakan ungkapan biasa ialah:

Watak Penerangan

^ Padankan input aksara Kedudukan permulaan rentetan. Jika sifat Multiline objek RegExp ditetapkan, ^ juga sepadan dengan kedudukan selepas n atau r.

$ Padan dengan hujung rentetan input. Jika sifat Multiline objek RegExp ditetapkan, $ juga sepadan dengan kedudukan sebelum n atau r.

b Memadankan sempadan perkataan, iaitu kedudukan antara perkataan dan ruang.

B Padanan sempadan bukan perkataan.

Nota: Pelayakkan tidak boleh digunakan dengan mata sauh. Memandangkan tidak boleh ada lebih daripada satu kedudukan sejurus sebelum atau selepas sempadan baris atau perkataan baharu, ungkapan seperti ^* tidak dibenarkan.

Untuk memadankan teks pada permulaan baris teks, gunakan aksara ^ pada permulaan ungkapan biasa. Jangan mengelirukan penggunaan ^ ini dengan penggunaan ungkapan kurungan dalam.

Untuk memadankan teks pada penghujung baris teks, gunakan aksara $ di hujung ungkapan biasa.

Untuk menggunakan mata utama semasa mencari tajuk bab, ungkapan biasa berikut sepadan dengan tajuk bab yang mengandungi hanya dua digit di belakang dan muncul pada permulaan baris:

/^ Bab [1-9][0-9]{0,1}/

Tajuk bab sebenar bukan sahaja muncul di awal baris, tetapi ia juga satu-satunya dalam baris Terdapat teks. Ia muncul pada permulaan baris dan pada penghujung baris yang sama. Ungkapan berikut memastikan bahawa padanan yang ditentukan hanya sepadan dengan bab dan bukan rujukan silang. Anda boleh melakukan ini dengan mencipta ungkapan biasa yang hanya sepadan dengan permulaan dan penghujung baris teks.

/^Bab [1-9][0-9]{0,1}$/

Padankan sempadan perkataan berbeza sedikit, tetapi ke arah Biasa ungkapan menambah keupayaan penting. Sempadan perkataan ialah kedudukan antara perkataan dan ruang. Sempadan bukan perkataan ialah sebarang kedudukan lain. Ungkapan berikut sepadan dengan tiga aksara pertama perkataan Bab kerana tiga aksara ini muncul selepas sempadan perkataan:

/bCha/

b aksara Lokasi ialah sangat penting. Ia mencari padanan pada permulaan perkataan jika ia berada di awal rentetan untuk dipadankan. Jika ia berada di hujung rentetan, ia mencari padanan di hujung perkataan. Sebagai contoh, ungkapan berikut sepadan dengan rentetan ter dalam perkataan Bab kerana ia muncul sebelum sempadan perkataan:

/terb/

Yang berikut Ungkapan sepadan dengan rentetan apt dalam Bab, tetapi bukan rentetan apt dalam aptitud:

/Bapt/

Rentetan apt berlaku pada sempadan bukan perkataan dalam perkataan Bab, tetapi pada sempadan perkataan dalam perkataan aptitude. Bagi pengendali sempadan bukan perkataan B, kedudukan tidak penting kerana padanan tidak mengambil kira sama ada ia permulaan atau penghujung perkataan.

Pilih

Sertakan semua pilihan dalam kurungan dan asingkan pilihan bersebelahan dengan |. Walau bagaimanapun, menggunakan kurungan akan mempunyai kesan sampingan, iaitu padanan yang berkaitan akan dicache Dalam kes ini, anda boleh menggunakan ?: sebelum pilihan pertama untuk menghapuskan kesan sampingan ini.

Antaranya, ?: ialah salah satu elemen bukan penangkapan, dan dua lagi elemen bukan penangkapan ialah ?= dan ?!. Kedua-dua ini mempunyai lebih banyak makna sebarang permulaan Rentetan carian dipadankan di mana-mana kedudukan dalam corak ungkapan biasa dalam kurungan, yang merupakan pandangan negatif yang sepadan dengan rentetan carian pada mana-mana kedudukan awal yang tidak sepadan dengan corak ungkapan biasa.

Rujukan belakang

Menambah kurungan di sekeliling corak ungkapan biasa atau sebahagian daripada corak akan menyebabkan padanan yang berkaitan disimpan dalam penimbal sementara , setiap subpadanan yang ditangkap disimpan dalam susunan yang ia muncul dalam corak ungkapan biasa dari kiri ke kanan. Penomboran penimbal bermula pada 1 dan boleh menyimpan sehingga 99 subungkapan yang ditangkap. Setiap penimbal boleh diakses menggunakan 'n', di mana n ialah nombor perpuluhan satu atau dua digit yang mengenal pasti penimbal tertentu.

Tangkapan boleh diganti menggunakan aksara meta bukan tangkap '?:', '?=' atau '?!', mengabaikan penjimatan padanan yang berkaitan.

Salah satu aplikasi rujukan belakang yang paling mudah dan berguna ialah keupayaan untuk mencari padanan dua perkataan bersebelahan yang serupa dalam teks. Ambil ayat berikut sebagai contoh:

Adakah kos petrol naik?

Ayat di atas jelas mempunyai beberapa perkataan berulang. Adalah baik untuk mencipta cara untuk mencari ayat ini tanpa perlu mencari ulangan setiap perkataan. Ungkapan biasa berikut mencapai ini menggunakan subungkapan tunggal:

/b([a-z]+) 1b/gi

ungkapan ditangkap Formula, seperti yang dinyatakan oleh [a-z]+, terdiri daripada satu atau lebih huruf. Bahagian kedua ungkapan biasa ialah rujukan kepada subpadanan yang telah ditangkap sebelum ini, iaitu, kejadian kedua perkataan yang dipadankan tepat dengan ungkapan kurungan. 1 menentukan subpadanan pertama. Metakarakter sempadan perkataan memastikan bahawa hanya keseluruhan perkataan dikesan. Jika tidak, frasa seperti "dikeluarkan" atau "ini" tidak akan dikenali dengan betul oleh ungkapan ini.

Teg global (g) selepas ungkapan biasa mengarahkan bahawa ungkapan itu digunakan pada seberapa banyak padanan yang boleh ditemui dalam rentetan input. Teg tidak peka huruf besar-kecil (i) pada penghujung ungkapan menentukan tidak sensitif huruf besar-besaran. Teg berbilang baris menyatakan kemungkinan padanan yang mungkin berlaku pada kedua-dua belah aksara baris baharu.

Rujukan belakang juga memecahkan Penunjuk Sumber Sejagat (URI) kepada komponennya. Katakan anda ingin memecahkan URI berikut kepada protokol (ftp, http, dll.), alamat domain dan halaman/laluan:

http://www.w3cschool.cc:80/html/html-tutorial .html

Ungkapan biasa berikut menyediakan fungsi ini:

/(w+)://([^/:]+)(:d*)?([^# ]*)/

Yang Pertama subungkapan kurungan menangkap bahagian protokol alamat Web. Subungkapan ini sepadan dengan mana-mana perkataan yang didahului oleh titik bertindih dan dua garis miring ke hadapan. Subungkapan kurungan kedua menangkap bahagian alamat domain alamat. Subungkapan sepadan dengan satu atau lebih aksara kecuali / dan :. Subungkapan kurungan ketiga menangkap nombor port (jika satu dinyatakan). Subungkapan ini sepadan dengan sifar atau lebih digit berikutan titik bertindih. Subungkapan ini boleh diulang sekali sahaja. Akhir sekali, subungkapan kurungan keempat menangkap maklumat laluan dan/atau halaman yang ditentukan oleh alamat Web. Subungkapan ini sepadan dengan mana-mana jujukan aksara yang tidak termasuk aksara # atau ruang.

Menggunakan ungkapan biasa pada URI di atas, setiap subpadanan mengandungi yang berikut:

1) Subungkapan kurungan pertama mengandungi "http"

2) Subungkapan kurungan kedua mengandungi "www.w3cschool.cc"

3) Subungkapan kurungan ketiga mengandungi ":80"

4) Subungkapan kurungan keempat Ungkapan mengandungi "../html/html-tutorial.html "

atom

Atom ialah unit terkecil dalam ungkapan biasa. Secara terang-terangan, atom perlu dipadankan. kandungan. Ungkapan biasa yang sah mesti mengandungi sekurang-kurangnya satu atom.

Penjelasan: Ruang, pemulangan gerabak, suapan baris, 0-9, A-Za-z, Cina, tanda baca dan simbol khas yang kita lihat adalah semua atom.

Sebelum melakukan contoh atom, mari kita terangkan dahulu fungsi, preg_match:

int preg_match ( string $regular, string $string[, array &$result] )

Fungsi: Padankan pembolehubah $rentetan berdasarkan $pembolehubah biasa. Jika wujud, kembalikan bilangan padanan dan letakkan hasil yang sepadan ke dalam pembolehubah $result. Jika tiada keputusan ditemui, 0 dikembalikan.

Mula dan tamat

^ bermaksud mula; $ bermaksud tamat

Di bawah Kod boleh sepadan dengan mana-mana nombor bermula dengan tarikh

$str = 'date20150121';

if (preg_match(' /^ date/', $str)) {
echo 'match successfully';
} else {
echo 'match failed';
}

wGunakan Untuk memadankan huruf , nombor atau aksara garis bawah;

d sepadan dengan nombor (D bermaksud bukan digit) untuk mewakili

$str = 'date20150121' ;

jika (preg_match('/^w/', $str, $matches)) {
print_r($matches);
} else {
echo 'Match failed';
}

Atom yang dikenal pasti khas

Atom Penerangan

d Padankan a 0-9

D semua aksara kecuali 0-9

w a-zA-Z0-9_

W kecuali 0-9A - Semua aksara kecuali -Za-z_

s Memadankan semua aksara ruang putih n t r Ruang

S Padan dengan semua aksara bukan ruang putih

[ ] Menentukan julat atom

Contoh:

d sepadan dengan 0-9

<?php
$zz = '/\d/';
$string = '我爱喝9你爱不爱喝';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

D sepadan dengan nilai selain 0-9

<?php
$zz = '/\D/';
$string = '121243中23453453';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Perlawanan berjaya dan perlawanan sudah masuk. Kerana ia bukan watak antara 0-9.

w sepadan dengan a-zA-Z0-9_

<?php
$zz = '/\w/';
$string = '新中_国万岁呀万岁';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Perlawanan berjaya dan garis bawah dipadankan.

W memadankan perlawanan bukan-a-zA-Z0-9_

<?php
$zz = '/\w/';
$string = 'afasABCWEQR44231284737';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

gagal. Kerana, semua di atas adalah a-zA-Z0-9_, dan tidak ada yang bukan a-zA-Z0-9_.

s memadankan semua aksara ruang kosong dan ruang

<?php
$zz = '/\s/';
$string = "中国万
岁";
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

berjaya dipadankan kerana terdapat pemulangan pengangkutan.

S aksara bukan kosong

<?php
$zz = '/\s/';
$string = "        
          a       ";
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

berjaya dipadankan. Walaupun terdapat ruang, kereta kembali dan lekukan padanya. Walau bagaimanapun, terdapat watak bukan ruang putih a. Oleh itu, perlawanan itu berjaya.

[] Atom dalam julat yang ditentukan

<?php
$zz = '/[0-5]\w+/';
$string = '6a';
$string1 = '1C';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Kesimpulan:
Dalam contoh di atas, 0-5 gagal sepadan dengan $string, tetapi $string1 berjaya. Kerana, nilai pertama dalam $string ialah 6, yang bukan dalam julat [0-5].

<?php
$zz = '/[a-zA-Z0-9_]\w/';
$string = 'ab';
$string1 = '9A';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Kesimpulan:

$string dan $string1 kedua-duanya berjaya dipadankan. Kerana w ialah [a-zA-Z0-9_]

<?php
$zz = '/[abc]\d+/';
$string = 'a9';
$string1 = 'b1';
$string2 = 'c5';
$string3 = 'd4';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Kesimpulan:

$string, $string1, $string2 berjaya dipadankan, tetapi $string3 tidak berjaya. Kerana $string3 melebihi julat [abc], ia bermula dari d.

[^ aksara] tidak sepadan dengan aksara dalam julat yang ditentukan

<?php
$zz = '/[^0-9A-Za-z_]/';
$string = 'aaaaab311dd';
$string1 = '!$@!#%$#^##';
if(preg_match($zz, $string, $matches)){
    echo '匹配到了,结果为:';
    var_dump($matches);
}else{
    echo '没有匹配到';
}
?>

Kesimpulan:

1) Tidak berjaya apabila memadankan $string, tetapi berjaya apabila memadankan $string1. Kerana terdapat watak circumflex di dalam kurungan segi empat sama.

2) ^ Fungsi aksara circumflex di dalam kurungan segi empat sama bukan untuk memadankan aksara di dalam kurungan segi empat sama.






Meneruskan pembelajaran
||
<?php $zz = '/wq/'; $string = 'ssssswqaaaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
  • Cadangan kursus
  • Muat turun perisian kursus