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<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

Ca rezultat, în variabilă se va scrie următorul text:

php'! ! abb'

Exemplul

În acest exemplu, șablonul de căutare este: trei litere 'a' sau de la 1 și mai mult litere 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

Ca rezultat, în variabilă se va scrie următorul text:

php'! ! ! ! axx'

Exemplul

În acest exemplu, șablonul de căutare este: una sau mai multe litere sau trei cifre:

php<?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:

php'! ! ! 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<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

Ca rezultat, în variabilă se va scrie următorul text:

php'! ! ! 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<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

Ca rezultat, în variabilă se va scrie următorul text:

php'! ! ! exx'

Probleme practice

Задание 1

Este dat șirul:

php<?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.

Задание 2

Este dat șirul:

php<?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.