Helmichs Informatik-Lexikon

Reguläre Ausdrücke

"Reguläre Ausdrücke finden vor allem in der Softwareentwicklung Verwendung. Neben Implementierungen in vielen Programmiersprachen verarbeiten auch viele Texteditoren reguläre Ausdrücke in der Funktion „Suchen und Ersetzen“. Ein einfacher Anwendungsfall von regulären Ausdrücken sind Wildcards.

Reguläre Ausdrücke können als Filterkriterien in der Textsuche verwendet werden, indem der Text mit dem Muster des regulären Ausdrucks abgeglichen wird. Dieser Vorgang wird auch Pattern Matching genannt. So ist es beispielsweise möglich, alle Wörter aus einer Wortliste herauszusuchen, die mit S beginnen und auf D enden, ohne die dazwischen liegenden Buchstaben oder deren Anzahl explizit vorgeben zu müssen."

Zitat aus dem Wikipedia-Artikel "Reguläre Ausdrücke"

Hier ein typischer regulärer Ausdruck:

[+-]?[0-9]+(.[0-9]+)?

Dieser reguläre Ausdruck beschreibt eine double-Zahl der Sprache Java oder C++. Wir wollen diesen regulären Ausdruck mal näher analysieren.

[+-]?

Mit diesem Teil des regulären Ausdrucks ist gemeint, dass ein Plus- oder ein Minuszeichen erlaubt ist. Das Fragezeichen zeigt, dass dies aber optional ist, der reguläre Ausdruck kann also auch ohne Plus- oder Minuszeichen anfangen.

[0-9]+

Als Nächstes wird eine Ziffer erwartet. Da hier kein Fragezeichen steht, sondern ein Pluszeichen, muss auf jeden Fall mindestens eine Ziffer kommen.

(.[0-9]+)?

Der letzte Teil des regulären Ausdrucks ist etwas komplexer. Das Fragezeichen hinter der schließenden Klammer sagt uns, dass dieser Teil optional ist, also nicht vorkommen muss, aber kann. Wenn dieser optionale Teil aber doch vorkommt, beginnt er mit einem Punkt. Dann kommt wieder mindestens eine Ziffer.

Haben Sie gemerkt, welche "Sprache" dieser reguläre Ausdruck definiert? Ganz einfach: Es sind alle gültigen double-Zahlen der Sprache Java. Hier ein paar Beispiele:

  • +3
  • -30
  • 456
  • 3.1
  • 3.145
  • -23.389

Im Abschnitt über deterministische endliche Automaten wird ein Automat vorgestellt, der ebenfalls double-Zahlen erkennt. Und in der Tat - reguläre Ausdrücke stehen exakt für die Sprache, die von deterministischen endlichen Automaten akzeptiert wird. Man kann also für jeden regulären Ausdrucken einen DEA entwerfen und umgekehrt kann man jeden DEA mit Hilfe eines regulären Ausdrucks darstellen.