Komanda 'arba' reguliariųjų išraiškų PHP

Šioje pamokoje išnagrinėsime komandą |, kuri yra galingesnė ARBA variacija, palyginti su komanda []. Ši komanda leidžia padalinti reguliariąją išraišką į kelias dalis. Tuomet ieškomas atitikmuo gali tenkinti vieną regulariosios išraiškos dalį arba kitą. Pažiūrėkime su pavyzdžiais.

Pavyzdys

Šiame pavyzdyje paieškos šablonas yra toks: trys raidės 'a' arba trys raidės 'b':

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

Rezultate į kintamąjį bus įrašyta tai:

php'! ! abb'

Pavyzdys

Šiame pavyzdyje paieškos šablonas yra toks: trys raidės 'a' arba nuo 1 ir daugiau raidžių 'b':

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

Rezultate į kintamąjį bus įrašyta tai:

php'! ! ! ! axx'

Pavyzdys

Šiame pavyzdyje paieškos šablonas yra toks: viena arba daugiau raidžių arba trys skaitmenys:

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

Rezultate į kintamąjį bus įrašyta tai:

php'! ! ! 1 12 !'

Pavyzdys

Vertikali linija gali padalinti reguliariąją išraišką ne į dvi dalis, o į bet kokį skaičių dalių:

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

Rezultate į kintamąjį bus įrašyta tai:

php'! ! ! ddd'

Pavyzdys

Jei vertikali linija yra roundiniuose skliaustuose, tai 'arba' veikia tik tuose skliaustuose. Pavyzdžiui, suraskime eilutes pagal šį šabloną: pradžioje yra arba 'a', arba 'b' vieną ar daugiau kartų, o po to dvi raidės 'x':

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

Rezultate į kintamąjį bus įrašyta tai:

php'! ! ! exx'

Praktinės užduotys

Задание 1

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes pagal šabloną: kraštuose yra raidės 'a', o tarp jų - arba raidė 'e' bet kokį skaičių kartų arba raidė 'x' bet kokį skaičių kartų.

Задание 2

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes pagal šabloną: kraštuose yra raidės 'a', o tarp jų - arba raidė 'e' du kartus arba raidė 'x' bet kokį skaičių kartų.