Zeichengruppen in regulären Ausdrücken PHP
Es gibt spezielle Befehle, die es erlauben,
sofort ganze Gruppen von Zeichen auszuwählen. Der Befehl
\d bedeutet eine Ziffer von 0 bis 9.
Der Befehl \w bezeichnet eine Ziffer, einen lateinischen
Buchstaben oder den Unterstrich. Der Befehl \s
bezeichnet ein Leerzeichen oder ein Leerzeichenzeichen:
Leerzeichen, Zeilenumbruch, Tabulator. Man kann
die Bedeutung des Befehls invertieren, indem man einen Großbuchstaben
schreibt: zum Beispiel, wenn \d - eine Ziffer ist,
dann ist \D - keine Ziffer.
Beispiel
Lassen Sie uns alle Ziffern finden:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'! !! !!!'
Beispiel
Wiederholungsoperatoren betrachten die Befehlsgruppen
als ein Ganzes, das heißt, gruppierende Klammern
sind nicht nötig. Im folgenden Beispiel sieht das Suchmuster
so aus: Ziffer von 0 bis 9
einmal oder mehrmals:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'! ! ! abc @@@'
Beispiel
Im folgenden Beispiel sieht das Suchmuster
so aus: alles beliebige einmal oder mehrmals,
aber keine Ziffer von 0 bis 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'123!3!'
Beispiel
In diesem Beispiel sieht das Suchmuster so aus: Leerzeichenzeichen einmal:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'1!12!123!abc!@@@'
Beispiel
In diesem Beispiel sieht das Suchmuster so aus:
KEIN Leerzeichenzeichen einmal oder mehrmals.
Alle Teilzeichenketten, die durch Leerzeichen getrennt sind, werden
durch '!' ersetzt:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'! ! ! ! !'
Beispiel
In diesem Beispiel sieht das Suchmuster so aus:
Ziffer oder Buchstabe einmal oder mehrmals.
Alle Teilzeichenketten, die aus Ziffern und Buchstaben bestehen,
werden durch '!' ersetzt:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
In der Variable wird folgendes gespeichert:
'! ! ! ! @@@'
Beispiel
In diesem Beispiel sieht das Suchmuster so aus:
KEINE Ziffer und KEIN Buchstabe einmal oder mehrmals.
Auf diese Definition treffen in unserem Fall
'@@@' und alle Leerzeichen zu (sie sind ja auch
weder Ziffern noch Buchstaben). Achten Sie auf
die Tatsache, dass am Ende ein '!' steht - darin
wurde die Zeichenkette ' @@@' - mit
einem Leerzeichen davor - umgewandelt:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
In der Variable wird folgendes gespeichert:
'1!12!123!Abc!'
Praktische Aufgaben
Gegeben sei die Zeichenkette:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine Ziffer.
Gegeben sei die Zeichenkette:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine beliebige Anzahl von Ziffern.
Gegeben sei die Zeichenkette:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten findet,
in denen an den Rändern die Buchstaben 'a' stehen,
und dazwischen eine beliebige Anzahl von Ziffern (einschließlich
auch null Ziffern, also die Zeichenkette 'aa').
Gegeben sei die Zeichenkette:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten
folgender Art findet: an den Rändern stehen die Buchstaben
'a' und 'b', und dazwischen - keine
Zahl.
Gegeben sei die Zeichenkette:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Schreiben Sie einen regulären Ausdruck, der die Zeichenketten
folgender Art findet: an den Rändern stehen die Buchstaben
'a' und 'b', und dazwischen - kein
Buchstabe und keine Ziffer.
Gegeben sei die Zeichenkette:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Schreiben Sie einen regulären Ausdruck, der alle Leerzeichen
durch '!' ersetzt.