Erweiterte Elemente der regulären Ausdrücke

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Überblick: Reguläre Ausdrücke

Quotierung

  • \Q: Ab diesem Metazeichen werden keine Metazeichen mehr erkannt bis zu \E
  • \E: Beendet die Quotierung von \Q

Beispiel:

  • Muster: \QKosten: 40$ ... 50$\E
  • Text: Kosten: 40$ ... 50$
  • Gruppe 0: Kosten: 40$ ... 50$

Nichtspeichernde Gruppierungen

Klammern haben den Effekt, dass die damit gefundenen Zeichenketten einer Gruppe zugeordnet werden, und zwar nach der Reihenfolge der öffnenden Klammern von links, die dann mittels Gruppen-Identifikator (Backlinks) \x referenziert werden können.

Die folgenden Konstrukte werden nicht in diese Gruppenliste eingetragen. Diese Konstrukte werden auch "zero length assertions" genannt.

Modifikatoren

Modifikatoren schalten ein bestimmtes Verhalten im Geltungsbereich (innerhalb der Klammern) ein oder aus:

  • (?iX) schaltet die Unterscheidung von Groß- und Kleinbuchstaben ein. Ist X leer, für den Bereich nach der ')', sonst für X innerhalb der Klammer.
    • "E(?im)ail" findet Email, aber nicht EMail
  • (?-iX) schaltet die Unterscheidung von Groß- und Kleinbuchstaben aus. Ist X leer, für den Bereich nach der ')', sonst für X innerhalb der Klammer.
    • "\.(?-i.jpg)" findet "Bild.jpg" und "bild.JPG"

Weitere Modifikatoren:

  • d (UNIXLINES): Statt \r\n wird \n als Zeilenende erkannt (Auswirkung auf $)
  • x (COMMENTS): Leerzeichen im Muster werden ignoriert. Damit wird eine übersichtlichere Notierung erreicht.
  • m (MULTILINE): Der Text, in dem gesucht wird, enthält mehr als einen Zeilenwechsel. Wirkt sich auf ^ und $ aus.
  • s (DOTALL, SINGLE_LINE): Das Metazeichen '.' umfasst auch den Zeilenwechsel.
  • u (UNICODE_CASE): In Zusammenhang mit dem IGNORE_CASE-Flag werden auch Unicode-Zeichen korrekt behandelt.

Weitere Modifikatoren, die nicht mittels (?xY)-Notation geschaltet werden können. Diese werden per Parameter an die jeweilige Methode übergeben (Java, Python...)

  • CANON_EQ: Bestimmte Zeichen haben im UNICODE mehrere Darstellungen. Mit diesem Schalter findet eine "Normalisierung" statt. Verlangsamt die Verarbeitung.
  • LITERAL: Es werden keine Metazeichen erkannt.

Allgemeine nichtspeichernde Gruppe

  • Syntax: (?:X)
  • Muster: (?Hallo|Sehr geehrter? (?Herr|Frau)) (\w+)
  • Text: Hallo Frau Meier
  • Gruppe 1: Meier

Vorausschau

Positive Vorschau

Auch "positive lookahead assertion" genannt.

  • Syntax: (?=X)
  • Muster: \d+\.\d{2}(?=EUR)
  • Text: 204.80EUR
  • Gruppe 0: 204.80

Erweitertes Beispiel:

  • Muster: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,12}$
  • Passwortprüfung: 6-12 Zeichen, mindestens eine Ziffer, mindestens ein Klein- und ein Großbuchstabe

Negative Vorschau

Auch "negative lookahead assertion" genannt.

  • Syntax: (?!X)
  • Muster: \d+\.\d{2}(?! )
  • Text: 204.80 EUR
  • Gruppe 0:
  • Hinweis: Da nach dem Betrag ein Blank folgt, passt das Muster nicht: Es wurde ja mit (?! ) ausgeschlossen.


Rückschau

Positive Rückschau

Auch "positive lookbehind assertion" genannt.

  • Syntax: (?<=X)
  • Muster: (?<+|-)\d
  • Text: Mindestens +20 Grad
  • Gruppe 0: 20

Negative Rückschau

  • Syntax: (?<!X)
  • Muster: (?<!//)\w+ =
  • Text: //a = 12;
  • Gruppe 0:
  • Hinweis: Dem "a =" geht "//" voraus, was aber mit (?<!//) ausgeschlossen ist.