Ein letztes wichtiges Konzept bei der Verwendung von Regular Expressions sind die reservierten Zeichen (auch Spezialzeichen genannt). Wenn man z.B. nach den Zeichenfolgen „ne*rd“ und „ni*rd“ suchen will, wird das Suchmuster „n[ei]*rd“ Variationen von „neeeeerd“ und „nieieierd“ erkennen, nicht aber die gewünschten Zeichenfolgen. Da ‚*‘ (der Kleene-Stern) ein reserviertes Zeichen ist, muss man eine Escape-Sequenz mit einem Backslash () im Muster verwenden: „n[ei]*rd“. Zu den weiteren reservierten Zeichen gehören:
- ^ (Caret)
- . (Punkt)
- [ (linke eckige Klammer)
- $ (Dollar-Zeichen)
- ( (linke Klammer)
- ) (rechte Klammer)
- | (senkrechter Strich)
- * (Sternchen)
- + (Plus-Zeichen)
- ? (Fragezeichen)
- { (linke geschwungene Klammer)
- (Backslash)
Wenn man erst einmal anfängt, diese Zeichen in Suchstrings einzufügen, wundert man sich nicht mehr, dass Regular Expressions schwieriger zu lesen als zu schreiben sind. Schauen Sie sich einmal den folgenden Code-Abschnitt an, der die eregi-Funktion in PHP aufruft, um zu prüfen, ob eine E-Mail-Adresse das korrekte Format hat:
eregi(„^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$“,$sendto)
Oder wie wär’s mit dieser vi-Substitution, um eine globale URI durch den lokalen Dateinahmen zu ersetzen:
s/http://www.somedomain.com/somedir/index.html/../somedir/index.html/
Wie man sieht, kann es schwierig werden, zu erkennen, was da eigentlich passiert. Aber wenn man für die Spezialzeichen keine Escape-Sequenzen benutzt, würde das die Bedeutung des Musters dramatisch ändern.
Zusammenfassung
In diesem Artikel habe ich versucht, das Geheimnis der Regular Expressions etwas zu lüften und eine Übersicht über die gebräuchlichsten Konstruktionen aus dem ERE-Standard zu geben. Wer sich für die vollständige Beschreibung der Open Group-Richtlinien interessiert, findet die Spezifikation online unter: Regular Expressions.
Neueste Kommentare
Noch keine Kommentare zu Regular Expressions: Syntax enträtselt
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.