Kommandoen 'eller' i regulære uttrykk i PHP

I denne leksjonen vil vi analysere kommandoen |, som representerer en mer kraftfull versjon av ELLER sammenlignet med kommandoen []. Denne kommandoen tillater å dele det regulære uttrykket i flere deler. Samtidig kan det søkte enten falle under en del av det regulære uttrykket, eller under en annen. La oss se på eksempler.

Eksempel

I dette eksemplet er søkemønsteret som følger: tre bokstaver 'a' eller tre bokstaver 'b':

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

Resultatet vil bli skrevet til variabelen som følger:

php'! ! abb'

Eksempel

I dette eksemplet er søkemønsteret som følger: tre bokstaver 'a' eller fra 1 og flere bokstaver 'b':

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

Resultatet vil bli skrevet til variabelen som følger:

php'! ! ! ! axx'

Eksempel

I dette eksemplet er søkemønsteret som følger: en eller flere bokstaver eller tre sifre:

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

Resultatet vil bli skrevet til variabelen som følger:

php'! ! ! 1 12 !'

Eksempel

Den vertikale streken kan dele det regulære uttrykket ikke i to deler, men i et hvilket som helst antall deler:

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

Resultatet vil bli skrevet til variabelen som følger:

php'! ! ! ddd'

Eksempel

Hvis den vertikale streken står innenfor runde parenteser, så virker 'eller' bare innenfor disse parentesene. La oss som eksempel finne strenger etter følgende mønster: i begynnelsen står enten 'a', eller 'b' en eller flere ganger, og deretter to bokstaver 'x':

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

Resultatet vil bli skrevet til variabelen som følger:

php'! ! ! exx'

Praktiske oppgaver

Задание 1

Gitt en streng:

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

Skriv et regulært uttrykk som vil finne strenger etter mønsteret: på kantene står bokstavene 'a', og mellom dem - enten bokstaven 'e' et hvilket som helst antall ganger eller bokstaven 'x' et hvilket som helst antall ganger.

Задание 2

Gitt en streng:

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

Skriv et regulært uttrykk som vil finne strenger etter mønsteret: på kantene står bokstavene 'a', og mellom dem - enten bokstaven 'e' to ganger eller bokstaven 'x' et hvilket som helst antall ganger.