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
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Resultatet vil bli skrevet til variabelen som følger:
'! ! abb'
Eksempel
I dette eksemplet er søkemønsteret som følger: tre
bokstaver 'a' eller fra 1 og flere
bokstaver 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Resultatet vil bli skrevet til variabelen som følger:
'! ! ! ! axx'
Eksempel
I dette eksemplet er søkemønsteret som følger: en eller flere bokstaver eller tre sifre:
<?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:
'! ! ! 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
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Resultatet vil bli skrevet til variabelen som følger:
'! ! ! 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
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Resultatet vil bli skrevet til variabelen som følger:
'! ! ! exx'
Praktiske oppgaver
Gitt en streng:
<?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.
Gitt en streng:
<?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.