Operator Pengulangan Karakter dalam Regex
Ada situasi di mana kita ingin menunjukkan,
bahwa sebuah karakter diulang sejumlah kali
tertentu. Jika kita tahu persis jumlah pengulangannya,
maka kita bisa menuliskannya beberapa kali
- #aaaa#. Tapi apa yang harus dilakukan jika kita ingin
mengatakan seperti ini: ulangi satu kali atau
lebih?
Untuk ini ada operator (quantifier)
pengulangan: plus + (satu kali atau lebih),
tanda bintang * (nol kali atau lebih) dan
tanda tanya ? (nol kali atau satu kali).
Operator-operator ini berlaku untuk karakter yang
berada di depannya.
Mari kita lihat cara kerja operator-operator ini pada contoh.
Contoh
Temukan semua substring sesuai pola huruf
'x', huruf 'a' satu kali atau lebih,
huruf 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Hasilnya, akan tersimpan di variabel sebagai berikut:
'xx ! ! ! xbx'
Contoh
Temukan semua substring sesuai pola huruf
'x', huruf 'a' nol kali atau lebih,
huruf 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Hasilnya, akan tersimpan di variabel sebagai berikut:
'! ! ! ! xbx'
Contoh
Temukan semua substring sesuai pola huruf
'x', huruf 'a' nol kali atau satu
kali, huruf 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Hasilnya, akan tersimpan di variabel sebagai berikut:
'! ! xaax xbx'
Tugas Praktis
Diberikan string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Tuliskan regex yang akan menemukan string
sesuai pola: huruf 'a', huruf 'b'
satu kali atau lebih, huruf 'a'.
Diberikan string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Tuliskan regex yang akan menemukan string
sesuai pola: huruf 'a', huruf 'b'
nol kali atau lebih, huruf 'a'.
Diberikan string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Tuliskan regex yang akan menemukan string
sesuai pola: huruf 'a', huruf 'b'
satu kali atau tidak sama sekali, huruf 'a'.
Diberikan string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Tuliskan regex yang akan menemukan string
'aa', 'aba', 'abba',
'abbba', tanpa menangkap 'abca'
dan 'abea'.