Comanda 'sau' în expresiile regulate PHP
În această lecție vom analiza comanda
|, care reprezintă o variantă
mult mai puternică a SAU în comparație cu
comanda []. Această comandă permite
împărțirea expresiei regulate în mai multe părți.
În acest caz, ceea ce este căutat poate să se potrivească fie cu o
parte a expresiei regulate, fie cu alta. Să vedem
câteva exemple.
Exemplul
În acest exemplu, șablonul de căutare este: trei
litere 'a' sau trei litere 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! abb'
Exemplul
În acest exemplu, șablonul de căutare este: trei
litere 'a' sau de la 1 și mai mult
litere 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! ! axx'
Exemplul
În acest exemplu, șablonul de căutare este: una sau mai multe litere sau trei cifre:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! 1 12 !'
Exemplul
Bara verticală poate împărți expresia regulată nu în două părți, ci în orice număr de părți:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! ddd'
Exemplul
Dacă bara verticală se află în interiorul parantezelor
rotunde, atunci 'sau' funcționează doar în interiorul
acestor paranteze. De exemplu, să găsim șirurile
conform următorului șablon: la început se află
fie 'a', fie 'b' de una sau mai multe
ori, iar apoi două litere 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! exx'
Probleme practice
Este dat șirul:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Scrieți o expresie regulată care va găsi șirurile
conform șablonului: la margini sunt literele 'a',
iar între ele - fie litera 'e' de orice
număr de ori fie litera 'x' de orice
număr de ori.
Este dat șirul:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Scrieți o expresie regulată care va găsi șirurile
conform șablonului: la margini sunt literele 'a',
iar între ele - fie litera 'e' de două ori
fie litera 'x' de orice număr de ori.