Riestiniai skliaustai PHP reguliariosiose išraiškose
Operatoriai +, *, ? yra geri,
tačiau jų pagalba negalima nurodyti konkretų
pasikartojimų skaičių. Šiuo atveju jums padės
operatorius {}.
Jis veikia taip: {5}
- penki pasikartojimai, {2,5} - pasikartoja
nuo dviejų iki penkių (abu imtinai), {2,}
- pasikartoja du ar daugiau kartų.
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' vieną
arba du kartus, raidė 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'xx ! ! xaaax'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' du
kartus ir daugiau, raidė 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'xx xax ! !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' tris
kartus, raidė 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'xx xax xaax !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'a' dešimt kartų:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'aaa ! aaa'
Pavyzdys
Šiame pavyzdyje kodo autorius norėjo tokį šabloną:
raidė 'x', raidė 'a' tris
kartus ir mažiau, raidė 'x',
tačiau, deja, toks - {,3} - neveikia.
Reikia nurodyti aiškiai:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'xx ! ! !'
Pavyzdys
Nulis taip pat leidžiamas:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Dėlto į kintamąjį bus įrašyta taip:
'! ! ! !'
Praktinės užduotys
Duota eilutė:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
'abba', 'abbba', 'abbbba'
ir tik jas.
Duota eilutė:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b' pasitaiko
mažiau nei tris kartus (imtinai).
Duota eilutė:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b' pasitaiko
daugiau nei keturis kartus (imtinai).