RegEx reguläre Ausdrücke verstehen
Bitte wählen:   Start     Login     Wallpapers     Praktisch     Tools     Umfragen     Infos     Blog     Job     Impressum     X  
Statusinfo ⇒   Neuling    TTLsec:5395     Sonntag, 19.11.2017     Letzte Änderung: 22.11.2015          
 

Bitte auswählen:
   Farbtabellen   
   Hashgenerator   
   MeineIP   
   PasswortKey   
   RegEx >> Start
   ResponseCodes   
   Schrifttabelle   
   ServerSideIncludes   
   StyleSheets   
   Unicode   
   Unixzeit   
   Whois   
   Zufallszahl   

RoBoTom sagt: Hallo Gast, ich bin dein virtueller Begleiter und begrüße dich herzlich beim DiamantNetz.
RoBoTom sagt: Bitte erst LOGIN.

Gast sagt zu  ?
 
 
 
               

               
                         


Regular Expressions

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".


Funktionsweise

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.


Online Test

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.