Operaterji ponavljanja znakov
Obstajajo situacije, ko želimo navesti,
da se znak ponovi določeno število
krat. Če poznamo točno število ponovitev,
ga lahko preprosto napišemo večkrat
- #aaaa#. Toda kaj storiti, če želimo
reči nekaj takega: ponovi se enkrat ali več
krat?
Za to obstajajo operatorji (kvantifikatorji)
ponavljanja: plus + (enkrat ali večkrat),
zvezdica * (ničkrat ali večkrat) in
vprašaj ? (ničkrat ali enkrat). Ti
operatorji delujejo na znak, ki
stoji pred njimi.
Poglejmo si delovanje teh operatorjev na primerih.
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' enkrat ali več
krat, črka 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx ! ! ! xbx'
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' ničkrat ali več
krat, črka 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! ! xbx'
Primer
Poiščimo vse podnize po vzorcu črka
'x', črka 'a' ničkrat ali enkrat,
črka 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! xaax xbx'
Praktične naloge
Podan je niz:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napišite regularni izraz, ki bo poiskal nize
po vzorcu: črka 'a', črka 'b'
enkrat ali večkrat, črka 'a'.
Podan je niz:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napišite regularni izraz, ki bo poiskal nize
po vzorcu: črka 'a', črka 'b'
ničkrat ali večkrat, črka 'a'.
Podan je niz:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napišite regularni izraz, ki bo poiskal nize
po vzorcu: črka 'a', črka 'b'
enkrat ali ničkrat, črka 'a'.
Podan je niz:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napišite regularni izraz, ki bo poiskal nize
'aa', 'aba', 'abba',
'abbba', ne da bi zajel 'abca'
in 'abea'.