Kumpulan aksara dalam ungkapan nalar PHP
Terdapat perintah khas yang membolehkan anda
memilih keseluruhan kumpulan aksara sekaligus. Perintah
\d bermaksud digit dari 0 hingga 9.
Perintah \w menandakan digit, huruf
Latin atau tanda garis bawah. Perintah \s
menandakan ruang atau aksara jarak:
ruang, baris baru, tab. Anda boleh
menyongsangkan nilai perintah dengan menulis huruf
besar: contohnya, jika \d - digit,
maka \D - bukan digit.
Contoh
Mari cari semua digit:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'! !! !!!'
Contoh
Pengendali pengulangan menganggap perintah-kumpulan
sebagai satu keseluruhan, iaitu kurungan pengelompokan
tidak diperlukan. Dalam contoh berikut, corak carian
kelihatan seperti ini: digit dari 0 hingga 9
sekali atau lebih:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'! ! ! abc @@@'
Contoh
Dalam contoh berikut, corak carian kelihatan
seperti ini: apa sahaja sekali atau lebih kali,
tetapi bukan digit dari 0 hingga 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'123!3!'
Contoh
Dalam contoh ini, corak carian kelihatan seperti ini: aksara jarak sekali:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'1!12!123!abc!@@@'
Contoh
Dalam contoh ini, corak carian kelihatan seperti ini:
BUKAN aksara jarak sekali atau lebih kali.
Semua substring, dipisahkan oleh ruang, akan digantikan
dengan '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'! ! ! ! !'
Contoh
Dalam contoh ini, corak carian kelihatan seperti ini:
digit atau huruf sekali atau lebih kali.
Semua substring, terdiri daripada digit dan huruf,
akan digantikan dengan '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'! ! ! ! @@@'
Contoh
Dalam contoh ini, corak carian kelihatan seperti ini:
BUKAN digit dan BUKAN huruf sekali atau lebih kali.
Dalam kes kami, '@@@' dan semua ruang (mereka juga
bukan digit dan bukan huruf) memenuhi definisi ini. Sila ambil perhatian
bahawa pada akhirnya satu '!' - string ' @@@' - dengan
ruang di depan - telah bertukar menjadi nya:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:
'1!12!123!Abc!'
Tugas praktikal
Diberikan string:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Tulis regex yang akan mencari string,
di mana huruf 'a' berada di tepi,
dan satu digit di antara mereka.
Diberikan string:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Tulis regex yang akan mencari string,
di mana huruf 'a' berada di tepi,
dan sebarang bilangan digit di antara mereka.
Diberikan string:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Tulis regex yang akan mencari string,
di mana huruf 'a' berada di tepi,
dan sebarang bilangan digit di antara mereka (termasuk
dan sifar digit, iaitu string 'aa').
Diberikan string:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Tulis regex yang akan mencari string
jenis berikut: huruf
'a' dan 'b' berada di tepi,
dan di antara mereka - bukan
nombor.
Diberikan string:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Tulis regex yang akan mencari string
jenis berikut: huruf
'a' dan 'b' berada di tepi,
dan di antara mereka - bukan
huruf dan bukan digit.
Diberikan string:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Tulis regex yang akan menggantikan semua ruang
dengan '!'.