⊗ppPmRgRO 224 of 447 menu

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'.

kkhuuzldehy