Grup karakter dalam ekspresi reguler PHP
Ada perintah khusus yang memungkinkan
untuk memilih sekelompok karakter secara langsung. Perintah
\d berarti digit dari 0 hingga 9.
Perintah \w menunjukkan digit, huruf Latin,
atau tanda garis bawah. Perintah \s
menunjukkan spasi atau karakter spasi:
spasi, baris baru, tab. Nilai perintah dapat
diinversi dengan menulis huruf besar:
contohnya, jika \d adalah digit,
maka \D adalah bukan digit.
Contoh
Mari kita cari semua digit:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'! !! !!!'
Contoh
Operator pengulangan menganggap perintah-grup
sebagai satu kesatuan, jadi tanda kurung pengelompokan
tidak diperlukan. Dalam contoh berikut, pola pencarian
terlihat seperti ini: digit dari 0 hingga 9
satu kali atau lebih:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'! ! ! abc @@@'
Contoh
Dalam contoh berikut, pola pencarian terlihat
seperti ini: apa saja satu kali atau lebih,
tapi bukan digit dari 0 hingga 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'123!3!'
Contoh
Dalam contoh ini, pola pencarian terlihat seperti ini: karakter spasi satu kali:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'1!12!123!abc!@@@'
Contoh
Dalam contoh ini, pola pencarian terlihat seperti ini:
BUKAN karakter spasi satu kali atau lebih.
Semua substring yang dipisahkan oleh spasi akan diganti
dengan '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'! ! ! ! !'
Contoh
Dalam contoh ini, pola pencarian terlihat seperti ini:
digit atau huruf satu kali atau lebih.
Semua substring yang terdiri dari digit dan huruf
akan diganti dengan '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Hasilnya, variabel akan berisi nilai berikut:
'! ! ! ! @@@'
Contoh
Dalam contoh ini, pola pencarian terlihat seperti ini:
BUKAN digit dan BUKAN huruf satu kali atau lebih.
Dalam kasus kita, definisi ini mencakup
'@@@' dan semua spasi (karena mereka juga
bukan digit dan bukan huruf). Perhatikan
bahwa di akhir ada satu '!' - ke dalamnya
telah berubah string ' @@@' - dengan
spasi di depannya:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Hasilnya, variabel akan berisi nilai berikut:
'1!12!123!Abc!'
Tugas Praktis
Diberikan string:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Tuliskan regex yang akan menemukan string,
di mana di sisinya terdapat huruf 'a',
dan di antaranya terdapat satu digit.
Diberikan string:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Tuliskan regex yang akan menemukan string,
di mana di sisinya terdapat huruf 'a',
dan di antaranya terdapat sejumlah digit berapa pun.
Diberikan string:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Tuliskan regex yang akan menemukan string,
di mana di sisinya terdapat huruf 'a',
dan di antaranya terdapat sejumlah digit berapa pun (termasuk
nol digit, yaitu string 'aa').
Diberikan string:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Tuliskan regex yang akan menemukan string
dengan jenis berikut: di sisinya terdapat huruf
'a' dan 'b', dan di antaranya - bukan
angka.
Diberikan string:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Tuliskan regex yang akan menemukan string
dengan jenis berikut: di sisinya terdapat huruf
'a' dan 'b', dan di antaranya - bukan
huruf dan bukan digit.
Diberikan string:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Tuliskan regex yang akan mengganti semua spasi
dengan '!'.