DiamantNetz 2.0 RegEx reguläre Ausdrücke verstehen |
Start Login Wallpapers Praktisch Tools Umfragen Infos Blog Impressum X |
Statusinfo ⇒
Neuling TTLsec:5395 Dienstag, 25.03.2025 Letzte Änderung: 28.07.2024 ![]() |
Reguläre Ausdrücke (= Regular Expressions = RegEx = RegExp) sind ein unverzichtbarer Bestandteil der Web-Programmierung. Sie dienen dem Suchen und Ersetzen von Zeichenketten (Mustern). Insbesondere für die Filterung der Benutzer-Eingaben zur Vermeidung von Sabotage ("Hacker") sind RegEx ein absolutes "Muss".
Je nach Programm-Oberfläche ist der Umfang der Funktionen unterschiedlich; dieser Beitrag bezieht sich in der Regel auf reguläre Ausdrücke, die unter PHP 5 laufen.
Die Stärke von RegEx gegenüber ähnlichen Befehlen (in PHP z.B. "str_replace") liegt in der vielschichtigen Mustererkennung. Man kann die Treffer-Bedingungen sehr komplex gestalten und ist nicht auf einen festen Suchbegriff beschränkt. So ist es z.B. möglich, die Bedingung zu formulieren "Finde alles, was mit http beginnt, mit htm aufhört und nicht mehr als 3 Punkte enthält", und nicht nur "Finde http://www.diamantnetz.de/index.htm".
Um das Verhalten von RegEx zu verstehen, muss man unbedingt wissen, dass reguläre Ausdrücke vom Anfang ausgehend stur Zeichen für Zeichen (einschl. Leezeichen, Zeilenumbruch-Zeichen etc.) abarbeiten und dabei gierig (engl. greedy) sind, also möglichst viele Zeichen treffen wollen.
Zum Beispiel würde die Suche in einer Zeichenkette nach "Finde was mit http anfängt und mit htm aufhört" über die gesamte Zeichenkette ALLES zwischen dem ersten http und dem LETZTEN htm treffen, also ggf. auch wenn dies (dazwischen) mehrmals auftritt.
Erwarten würde man dagegen wohl, dass nur alles zwischen dem ersten http und dem ERSTEN htm getroffen würde. Diese Gierigkeit lässt sich meist - je nach Programm - durch entsprechende Verwendung von Metazeichen (hintenangestelltes Fragezeichen) unterbinden.
Bei dem Mustervergleich spielt es auch - sofern nicht durch einen speziellen Befehl (\b) Wortgrenzen festgelegt wurden - keine Rolle, welche Zeichen um den Suchbegriff herum stehen. Ein preg_match auf wort trifft "je wortgewaltiger ein wort ist", also gleich das erste "wort" im Teilausdruck "wortgewaltiger"; analog würde der RegEx auch das "wort" in "Unworte" treffen.
Du kannst hier auch direkt einen regulären Ausdruck online testen (sh. oben die Taste). Wenn du einen komplexeren Test mit zusätzlichen Variationen durchführen willst, kannst du z.B. das Tool von regexplanet.com (engl.) ausprobieren.