Simbolių pasikartojimo operatoriai
Būna situacijų, kai norime nurodyti,
kad simbolis kartojamas nurodytą skaičių
kartų. Jei žinome tikslų pasikartojimų skaičių,
tai galime tiesiog parašyti jį kelis kartus
- #aaaa#. Bet ką daryti, jei norime
pasakyti taip: pakartoti vieną ar daugiau
kartų?
Tam yra (kvantifikatoriai)
pasikartojimo operatoriai: pliusas + (vieną ar daugiau kartų),
žvaigždutė * (nulis ar daugiau kartų) ir
klaustukas ? (nulis ar vieną kartą). Šie
operatoriai veikia tą simbolį, kuris
stovi prieš juos.
Pažiūrėkime, kaip šie operatoriai veikia pavyzdžiuose.
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' vieną ar daugiau
kartų, raidė 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'xx ! ! ! xbx'
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' nulis ar daugiau
kartų, raidė 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! ! xbx'
Pavyzdys
Raskime visas paštoines pagal šabloną raidė
'x', raidė 'a' nulis ar vieną
kartą, raidė 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! xaax xbx'
Praktinės užduotys
Duota eilutė:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: raidė 'a', raidė 'b'
vieną ar daugiau kartų, raidė 'a'.
Duota eilutė:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: raidė 'a', raidė 'b'
nulis ar daugiau kartų, raidė 'a'.
Duota eilutė:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: raidė 'a', raidė 'b'
vieną kartą arba nė vieno, raidė 'a'.
Duota eilutė:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
'aa', 'aba', 'abba',
'abbba', neperimdama 'abca'
ir 'abea'.