Ukaz 'ali' v regularnih izrazih PHP

V tej lekciji bomo razstavili ukaz |, ki predstavlja bolj močno različico ALI v primerjavi z ukazom []. Ta ukaz omogoča razdelitev regularnega izraza na več delov. Pri tem lahko iskani niz ustreza bodisi enemu delu regularnega izraza bodisi drugemu. Poglejmo si primere.

Primer

V tem primeru je vzorec iskanja takšen: tri črke 'a' ali tri črke 'b':

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

php'! ! abb'

Primer

V tem primeru je vzorec iskanja takšen: tri črke 'a' ali od 1 in več črk 'b':

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

php'! ! ! ! axx'

Primer

V tem primeru je vzorec iskanja takšen: ena ali več črk ali tri številke:

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

php'! ! ! 1 12 !'

Primer

Navpična črta lahko razdeli regularni izraz ne na dva dela, temveč na poljubno število delov:

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

php'! ! ! ddd'

Primer

Če je navpična črta znotraj okroglih oklepajev, potem 'ali' deluje samo znotraj teh oklepajev. Za primer poiščimo nize po naslednjem vzorcu: na začetku stoji ali 'a', ali 'b' enkrat ali večkrat, in nato dve črki 'x':

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

php'! ! ! exx'

Praktične naloge

Задание 1

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize po vzorcu: ob robih stojijo črke 'a', in med njimi - ali črka 'e' poljubno število krat ali črka 'x' poljubno število krat.

Задание 2

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize po vzorcu: ob robih stojijo črke 'a', in med njimi - ali črka 'e' dvakrat ali črka 'x' poljubno število krat.