Kommandoen 'eller' i regulære udtryk i PHP

I denne lektion vil vi analysere kommandoen |, som repræsenterer en mere kraftfuld version af ELLER sammenlignet med kommandoen []. Denne kommando gør det muligt at opdele det regulære udtryk i flere dele. Samtidig kan det søgte enten passe til den ene del af det regulære udtryk eller til den anden. Lad os se på eksempler.

Eksempel

I dette eksempel er søgemønsteret som følger: tre bogstaver 'a' eller tre bogstaver 'b':

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

Resultatet vil blive skrevet til variablen som følger:

php'! ! abb'

Eksempel

I dette eksempel er søgemønsteret som følger: tre bogstaver 'a' eller fra 1 og derover bogstaver 'b':

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

Resultatet vil blive skrevet til variablen som følger:

php'! ! ! ! axx'

Eksempel

I dette eksempel er søgemønsteret som følger: et eller flere bogstaver eller tre cifre:

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

Resultatet vil blive skrevet til variablen som følger:

php'! ! ! 1 12 !'

Eksempel

Den lodrette streg kan opdele det regulære udtryk i ikke kun to dele, men i et vilkårligt antal dele:

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

Resultatet vil blive skrevet til variablen som følger:

php'! ! ! ddd'

Eksempel

Hvis den lodrette streg står inde i runde parenteser, så virker 'eller' kun inde i disse parenteser. Lad os som eksempel finde strenge efter følgende mønster: i starten står enten 'a' eller 'b' en eller flere gange, og derefter to bogstaver 'x':

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

Resultatet vil blive skrevet til variablen som følger:

php'! ! ! exx'

Praktiske opgaver

Задание 1

Givet en streng:

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

Skriv et regulært udtryk, der finder strenge efter mønsteret: på kanterne står bogstaverne 'a', og imellem dem - enten bogstavet 'e' et vilkårligt antal gange eller bogstavet 'x' et vilkårligt antal gange.

Задание 2

Givet en streng:

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

Skriv et regulært udtryk, der finder strenge efter mønsteret: på kanterne står bogstaverne 'a', og imellem dem - enten bogstavet 'e' to gange eller bogstavet 'x' et vilkårligt antal gange.