Komanda 'vai' regulārajās izteiksmēs PHP

Šajā nodarbībā mēs analizēsim komandu |, kas ir jaudīgāka VAI salīdzinājumā ar komandu []. Šī komanda ļauj sadalīt regulāro izteiksmi vairākās daļās. Šajā gadījumā meklētais var atbilst vai nu vienai regulārās izteiksmes daļai, vai otrai. Apskatīsim piemērus.

Piemērs

Šajā piemērā meklēšanas veidne ir šāda: trīs burti 'a' vai trīs burti 'b':

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

php'! ! abb'

Piemērs

Šajā piemērā meklēšanas veidne ir šāda: trīs burti 'a' vai no 1 un vairāk burti 'b':

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

php'! ! ! ! axx'

Piemērs

Šajā piemērā meklēšanas veidne ir šāda: viens vai vairāk burti vai trīs cipari:

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

php'! ! ! 1 12 !'

Piemērs

Vertikālā svītra var sadalīt regulāro izteiksmi ne divās daļās, bet jebkurā daudzumā daļu:

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

php'! ! ! ddd'

Piemērs

Ja vertikālā svītra atrodas apaļās iekavās, tad 'vai' darbojas tikai šo iekavu iekšienē. Piemēram, atradīsim virknes pēc šādas veidnes: sākumā atrodas vai 'a', vai 'b' vienu reizi vai vairāk reizes, un pēc tam divi burti 'x':

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

php'! ! ! exx'

Praktiskie uzdevumi

Задание 1

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes pēc veidnes: malās atrodas burti 'a', un starp tiem - vai burts 'e' jebkurš daudzums reižu vai burts 'x' jebkurš daudzums reižu.

Задание 2

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes pēc veidnes: malās atrodas burti 'a', un starp tiem - vai burts 'e' divas reizes vai burts 'x' jebkurš daudzums reižu.