Ryhmittelevät sulkeet PHP:n säännöllisissä lausekkeissa
Edellisissä esimerkeissä toistooperaattorit vaikuttivat vain yhteen merkkiin, joka seisoi niiden edessä. Mitä tehdä, jos haluamme saada ne vaikuttamaan useaan merkkiin?
Tätä varten on olemassa ryhmittelevät sulkeet
'(' ja ')'. Ne toimivat seuraavasti:
jos jotain on ryhmittelevien sulkeiden sisällä
ja heti ')' jälkeen on toistooperaattori
- se vaikuttaa kaikkeen, mikä on sulkeiden sisällä.
Seuraavassa esimerkissä hakumalli näyttää
tältä: kirjain 'x', sitten merkkijono 'ab'
yksi tai useampi kerta, sitten kirjain 'x':
<?php
$str = 'xabx xababx xaabbx';
$res = preg_replace('#x(ab)+x#', '!', $str);
?>
Tuloksena muuttujaan kirjoitetaan seuraava:
'! ! xaabbx'
Annettu merkkijono:
<?php
$str = 'ab abab abab abababab abea';
?>
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
mallin mukaan: merkkijono 'ab' toistuu
1 tai useamman kerran.