PHP:n säännöllisten lausekkeiden 'tai'-komento

Tässä oppitunnissa käsittelemme komentoa |, joka edustaa tehokkaampaa TAI-versiota verrattuna komentoon []. Tämä komento mahdollistaa säännöllisen lausekkeen jakamisen useaan osaan. Samalla etsittävä voi osua joko yhteen säännöllisen lausekkeen osaan tai toiseen. Katsotaan esimerkkien avulla.

Esimerkki

Tässä esimerkissä hakumalli on seuraava: kolme kirjainta 'a' tai kolme kirjainta 'b':

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! abb'

Esimerkki

Tässä esimerkissä hakumalli on seuraava: kolme kirjainta 'a' tai 1 tai enemmän kirjainta 'b':

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! ! axx'

Esimerkki

Tässä esimerkissä hakumalli on seuraava: yksi tai useampi kirjain tai kolme numeroa:

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! 1 12 !'

Esimerkki

Pystyviiva voi jakaa säännöllisen lausekkeen ei kahteen osaan, vaan mihin tahansa määrään osia:

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! ddd'

Esimerkki

Jos pystyviiva on pyöreiden sulkeiden sisällä, niin 'tai' toimii vain näiden sulkeiden sisällä. Esimerkkinä etsitään merkkijonoja seuraavan mallin mukaisesti: alussa on joko 'a' tai 'b' yksi tai useampi kerta, ja sitten kaksi kirjainta 'x':

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

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! exx'

Käytännön tehtävät

Задание 1

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot seuraavan mallin mukaisesti: reunoissa on kirjaimet 'a', ja niiden välissä - joko kirjain 'e' mikä tahansa määrä kertoja tai kirjain 'x' mikä tahansa määrä kertoja.

Задание 2

Annettu merkkijono:

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

Kirjoita säännöllinen lauseke, joka löytää merkkijonot seuraavan mallin mukaisesti: reunoissa on kirjaimet 'a', ja niiden välissä - joko kirjain 'e' kaksi kertaa tai kirjain 'x' mikä tahansa määrä kertoja.