Reguläre Ausdrücke:Javakurs

Aus Info-Theke
Version vom 20. Dezember 2022, 18:06 Uhr von 91.62.188.31 (Diskussion)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


Übersicht

Links[Bearbeiten]

Übersicht[Bearbeiten]

Reguläre Ausdrücke sind eine formale Sprache für Suchmuster. Sie sind eine in der Informatik weitverbreitete Methode zum Formulieren von Textsuche.

Die Sprache enthält Metasymbole, das sind Sonderzeichen, die eine besondere Bedeutung haben, also keine "zu suchenden Zeichen" darstellen.

Elemente[Bearbeiten]

  • ".": Der Punkt ist ein Metazeichen, das genau ein beliebiges Zeichen repräsentiert.
    • "W.tte" kann "Wette" oder "Watte", aber auch "W3tte" bedeuten
  • "\\d": eine Dezimalziffer
  • "\\w": ein Zeichen eines Namens, also a-z, A-Z, 0-9 und _
  • "[<aufzaehlung>]": eine Zeichenklasse: in der Klasse können einzelne Zeichen aufgezählt werden oder Intervalle angegeben werden:
    • "[0-7]" bedeutet eine Oktalziffer: 0 1 2 3 4 5 6 oder 7
    • "[aeiou]" bedeutet einen Vokal
    • "W[ae]tte" findet genau "Watte" oder "Wette"
    • "[a-zA-Z0-9_]" ist also das gleiche wie "\\w"
  • "\\x": mit dem ESC-Symbol \\ wird das folgende Zeichen zum Nicht-Methazeichen. Damit kann man also Zeichen kennzeichnen, die selber Metazeichen sind:
    • "\\." findet den Punkt
    • "\\[x\\]" findet den String "[x]"
  • Beginnt eine Zeichenklasse mit dem "^"-Zeichen, so wird die Zeichenmenge invers:
    • "[^0-9]": genau ein Zeichen, das keine Dezimalziffer ist
  • "(" und ")" fassen eine Gruppe ein. Damit können komplexe Ausdrücke formuliert werden.
  • Alle Nichtmetazeichen stehen für sich selbst:
    • "Hallo" findet genau "Hallo"

Operatoren[Bearbeiten]

  • Der "|" ist der "Oder-Operator", der als Ergebnis das eine oder das andere zulässt:
    • "Eis|Schnee|Regen" findet entweder "Eis", "Schnee" oder "Regen"
    • "(Eis|Schnee)regen" findet entweder "Eisregen" oder "Schneeregen"

Quantoren[Bearbeiten]

  • "*": Steht hinter einem Element ein Stern, so darf das Element beliebig oft vorkommen (auch 0-mal, also gar nicht)
    • "\\d\\d*" ist eine natürliche Zahl
  • "+": Steht hinter einem Element ein Plus, so muss das Element mindestens einmal vorkommen.
    • "\\d+" ist eine natürliche Zahl
  • "?": Steht hinter einem Element ein Fragezeichen, so muss das Element 0 oder einmal vorkommen.
    • "[-+]?\d*" findet eine Ganzzahl (mit oder ohne Vorzeichen)
  • "{<range>}": steht hinter einem Element ein Bereich, so muss das Element entsprechend oft vorkommen:
    • Ist der Bereich genau eine Ganzzahl, so muss das Element genau so oft vorkommen: "[A-Z]{3}" sind genau 3 Grossbuchstaben
    • Ist der Bereich ein Intervall, begrenzt dieses Intervall die Anzahl der Vorkommen:
      • "[0-9A-F]{1,8}" sind ein- bis 8-stellige Hexzahlen
    • "{,8}" ist die Abkürzung für "{0,8}"
    • "{3,}" bedeutet mindestens 3 mal

Positive and Negative Lookahead[Bearbeiten]

# Finde q, wenn danach kein u steht.
q(?!u)
# Finde q mit folgendem u
q(?=u) 

u ist nicht Bestandteil des Treffers.

Positive and Negative Lookbehind[Bearbeiten]

# Finde b, außer davor steht ein a
(?<!a)b
# Finde b, wenn ein a davor steht
(?<=a)b 

a ist nicht Bestandteil des Treffers.