Komanda 'ili' u regularnim izrazima PHP

U ovoj lekciji ćemo razmotriti komandu |, koja predstavlja moćniju verziju ILI u poređenju sa komandom []. Ova komanda omogućava podelu regularnog izraza na nekoliko delova. Pritom traženi tekst može odgovarati bilo jednom delu regularnog izraza, bilo drugom. Hajde da pogledamo na primerima.

Primer

U ovom primeru šablon pretrage je: tri slova 'a' ili tri slova 'b':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! abb'

Primer

U ovom primeru šablon pretrage je: tri slova 'a' ili od 1 i više slova 'b':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! ! ! axx'

Primer

U ovom primeru šablon pretrage je: jedno ili više slova ili tri cifre:

php<?php
  $str = 'a ab abc 1 12 123';
  $res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! ! 1 12 !'

Primer

Vertikalna crta može podeliti regularni izraz ne na dva dela, već na bilo koji broj delova:

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! ! ddd'

Primer

Ako se vertikalna crta nalazi unutar okruglih zagrada, onda 'ili' radi samo unutar tih zagrada. Za primer, hajde da pronađemo niske po sledećem šablonu: na početku se nalazi ili 'a', ili 'b' jedan ili više puta, a zatim dva slova 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

php'! ! ! exx'

Praktični zadaci

Задание 1

Data je niska:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Napišite regularni izraz koji će pronaći niske po šablonu: sa krajeva se nalaze slova 'a', a između njih - ili slovo 'e' bilo koji broj puta ili slovo 'x' bilo koji broj puta.

Задание 2

Data je niska:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Napišite regularni izraz koji će pronaći niske po šablonu: sa krajeva se nalaze slova 'a', a između njih - ili slovo 'e' dva puta ili slovo 'x' bilo koji broj puta.