Der 'oder'-Befehl in regulären Ausdrücken von PHP
In dieser Lektion behandeln wir den Befehl
|, der eine leistungsfähigere Variante
von ODER im Vergleich zum Befehl
[] darstellt. Dieser Befehl ermöglicht es,
den regulären Ausdruck in mehrere Teile zu trennen.
Dabei kann das Gesuchte entweder auf einen Teil
des regulären Ausdrucks passen oder auf einen anderen.
Sehen wir uns das an Beispielen an.
Beispiel
In diesem Beispiel ist das Suchmuster wie folgt: drei
Buchstaben 'a' oder drei Buchstaben 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Als Ergebnis wird Folgendes in die Variable geschrieben:
'! ! abb'
Beispiel
In diesem Beispiel ist das Suchmuster wie folgt: drei
Buchstaben 'a' oder 1 oder mehr
Buchstaben 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Als Ergebnis wird Folgendes in die Variable geschrieben:
'! ! ! ! axx'
Beispiel
In diesem Beispiel ist das Suchmuster wie folgt: ein oder mehrere Buchstaben oder drei Ziffern:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Als Ergebnis wird Folgendes in die Variable geschrieben:
'! ! ! 1 12 !'
Beispiel
Der senkrechte Strich kann den regulären Ausdruck nicht nur in zwei Teile, sondern in beliebig viele Teile teilen:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Als Ergebnis wird Folgendes in die Variable geschrieben:
'! ! ! ddd'
Beispiel
Wenn der senkrechte Strich innerhalb von runden
Klammern steht, dann funktioniert 'oder' nur innerhalb
dieser Klammern. Nehmen wir zum Beispiel an, wir suchen Zeichenketten
nach dem folgenden Muster: am Anfang steht
entweder 'a' oder 'b' ein oder mehrere
Male, und danach zwei Buchstaben 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Als Ergebnis wird Folgendes in die Variable geschrieben:
'! ! ! exx'
Praktische Aufgaben
Gegeben sei die Zeichenkette:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Schreiben Sie einen regulären Ausdruck, der Zeichenketten
nach dem Muster findet: an den Rändern stehen die Buchstaben 'a',
und dazwischen - entweder der Buchstabe 'e' beliebig
oft oder der Buchstabe 'x' beliebig oft.
Gegeben sei die Zeichenkette:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Schreiben Sie einen regulären Ausdruck, der Zeichenketten
nach dem Muster findet: an den Rändern stehen die Buchstaben 'a',
und dazwischen - entweder der Buchstabe 'e' zwei Mal
oder der Buchstabe 'x' beliebig oft.