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
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Resultatet vil blive skrevet til variablen som følger:
'! ! abb'
Eksempel
I dette eksempel er søgemønsteret som følger: tre
bogstaver 'a' eller fra 1 og derover
bogstaver 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Resultatet vil blive skrevet til variablen som følger:
'! ! ! ! axx'
Eksempel
I dette eksempel er søgemønsteret som følger: et eller flere bogstaver eller tre cifre:
<?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:
'! ! ! 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
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Resultatet vil blive skrevet til variablen som følger:
'! ! ! 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
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Resultatet vil blive skrevet til variablen som følger:
'! ! ! exx'
Praktiske opgaver
Givet en streng:
<?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.
Givet en streng:
<?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.