Operatori de repetare a caracterelor în expresii regulate
Există situații când vrem să indicăm,
că un caracter se repetă de un anumit număr
de ori. Dacă știm numărul exact de repetări,
atunci putem să-l scriem de mai multe ori
- #aaaa#. Dar ce să facem, dacă vrem
să spunem așa: se repetă o dată sau de
multe ori?
Pentru aceasta există operatorii (cuantificatori)
de repetare: plus + (o dată sau de mai multe ori),
stea * (zero sau de mai multe ori) și
întrebare ? (zero sau o dată). Acești
operatori acționează asupra caracterului care
se află înaintea lor.
Să vedem funcționarea acestor operatori cu exemple.
Exemplul
Să găsim toate subșirurile după șablonul litera
'x', litera 'a' o dată sau de mai multe
ori, litera 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Ca rezultat în variabilă se va scrie următoarele:
'xx ! ! ! xbx'
Exemplul
Să găsim toate subșirurile după șablonul litera
'x', litera 'a' zero sau de mai multe
ori, litera 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Ca rezultat în variabilă se va scrie următoarele:
'! ! ! ! xbx'
Exemplul
Să găsim toate subșirurile după șablonul litera
'x', litera 'a' zero sau o dată,
litera 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Ca rezultat în variabilă se va scrie următoarele:
'! ! xaax xbx'
Probleme practice
Este dat șirul:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrieți o expresie regulată, care va găsi șirurile
după șablonul: litera 'a', litera 'b'
o dată sau de mai multe ori, litera 'a'.
Este dat șirul:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrieți o expresie regulată, care va găsi șirurile
după șablonul: litera 'a', litera 'b'
zero sau de mai multe ori, litera 'a'.
Este dat șirul:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrieți o expresie regulată, care va găsi șirurile
după șablonul: litera 'a', litera 'b'
o dată sau deloc, litera 'a'.
Este dat șirul:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrieți o expresie regulată, care va găsi șirurile
'aa', 'aba', 'abba',
'abbba', fără a captura 'abca'
și 'abea'.