Definition „Regular Expressions“ Wie funktionieren RegEx?
Anbieter zum Thema
Reguläre Ausdrücke, englisch Regular Expressions oder kurz RegEx, helfen beim Durchsuchen von Strings. Aber wie genau funktionieren reguläre Ausdrücke in der IT?

Auf Basis syntaktischer Regeln können in der IT Zeichenketten gebildet werden, diese werden als regulärer Ausdruck oder RegEx (kur für Regular Expression) bezeichnet. Entlehnt ist das Prinzip der Idee der regulären Sprache und zählt als Teil der formalen Sprachen. Als Urheber der Formalisierung der regulären Sprache und des Ausdrucks „regular expressions“ gilt der Mathematiker Stephen Cole Kleene.
In der Regel dienen reguläre Ausdrücke der Beschreibung verschiedener Mengen von Zeichenketten, dies kommt in unterschiedlichen Szenarien zum Einsatz. Beispiele hierfür sind Funktionen wie „Suchen & Ersetzen“ oder einer einfachen Implementierung in eine beliebige Programmiersprache.
Jeder Ausdruck geht einher mit der Existenz eines endlichen Automaten (ein Verhaltensmodell aus Zuständen, Zustandsübergängen und Aktionen). Dieser Automat kann mithilfe der Thompson-Konstruktion aus dem regulären Ausdruck gebildet werden und beschreibt die Sprache, die im regulären Ausdruck spezifiziert wird.
Was in der Theorie aufgrund der mathematischen Basis recht kompliziert klingt, lässt sich bei einem Blick auf die Anwendungsszenarien besser verstehen.
Wie sieht ein regulärer Ausdruck aus?
Ein regulärer Ausdruck besteht aus normalen Zeichen und wahlweise aus Metazeichen. Während die normalen Zeichen eine Referenz auf den Inhalt eines Strings sind, können die Metazeichen (etwa: * oder +) bestimmte Regeln in den regulären Ausdruck übertragen. Muster regulärer Ausdrücke folgen dabei sehr strikten Regeln und müssen mit der Zeichenkette exakt übereinstimmen, es sei denn durch Metazeichen wird eine andere Auslegung der Regel impliziert.
Ein Beispiel wäre der reguläre Ausdruck „gut“ – dieser müsste genau so in einem String vorkommen, um identifiziert zu werde. Die Spezifikationen würden aber durch verschiedene Bedingungen erfüllt wie beispielsweise „gut“, „gute“, „Erbgut“ oder „ungutes“. Relevant ist für die Übereinstimmung mit dem regulären Ausdruck nicht die Position im String, sondern lediglich das Vorkommen aller normalen Zeichen in der vordefinierten Reihenfolge.
Metazeichen können neue Regeln in den regulären Ausdruck induzieren, so dass der reguläre Ausdruck erweitert werden kann. Einige Beispiele für Metazeichen in regular expressions:
- + – Zeichen vor einem Pluszeichen müssen mindestens einmal vorhanden sein: gu+t würde also übereinstimmen mit gut wie auch mit guuuuuuut.
- ? – Zeichen vor einem Fragezeichen dürfen maximal einmal vorkommen, müssen aber nicht vorkommen: gu?t würde also übereinstimmen mit gut wie auch mit gt.
- * – Zeichen vor einem Sternchen dürfen beliebig oft (0 bis unendlich) in einem String vorkommen: gu*t stimmt also mit gt ebenso überein wie mit gut oder guuuuut.
- $ – Zeichen vor einem Dollarzeichen werden nur am Ende einer Zeile gesucht.
- - – Der Bindestrich gibt einen Bereich im String an: 1-10 würde also mit allen Zahlen zwischen eins und zehn übereinstimmen
Der Einsatz von Metazeichen gilt hierbei ebenso für Zeichen wie auch für Gruppen und Klassen.
Wie funktionieren reguläre Ausdrücke in der Praxis?
Anhand eines Suchmusters ist es am einfachsten, an den Fall einer Suche zu denken. Tatsächlich kamen regular expressions auch hier erstmals zum Einsatz. In den 60ern implementierte Ken Thompson die regulären Ausdrücke in den Unix Editor qed und noch heute werden regular expressions in den Bibliotheken vieler Programmiersprachen genutzt.
Nicht nur für Programmiererinnen und Programmierer ist die Kenntnis regulärer Ausdrücke und der darunter liegenden Syntax vorteilhaft, auch User von Software wie Open Office können mithilfe von RegEx schneller Suchoperationen durchführen. Ein Suchmuster etwa ist ein ideales Beispiel für den Einsatz von regulären Ausdrücken und vor allem für dein Einsatz von Metazeichen, um den syntaktischen Sinn hinter diesen Abkürzungen zu verstehen.
RegEx [123456789] würde eine Zeichenklasse definieren, in der jedes Zeichen aus der Klasse gesucht wird. Dieser Ausdruck ließe sich auch ausdrücken über [1-9] und könnte auch in einem zusammengefassten Ausdruck Zahlen ausschließen. [1-46-9] würde beispielsweise die Fünf ausschließen, da keine Leerzeichen eingesetzt werden, wirkt die Schreibweise auf den ersten Blick etwas befremdlich.
XML-Dokumente beschränken den Einsatz von regulären Ausdrücken auf Elementinhalte, während etwa in JavaScript auch String-Methoden über reguläre Ausdrücke genutzt werden. Die Syntax von regular expressions unterscheidet sich zwischen den Programmiersprachen so gut wie gar nicht, so dass das Meistern der regulären Ausdrücke zwischen den Sprachen bestens übertragbar ist. Der generelle Aufbau eines regulären Ausdrucks ist dreiteilig und stets gleich:
- Suchmuster (Pattern): Bestehend aus normalen Zeichen oder Metazeichen gibt das Suchmuster den zu suchenden Inhalt an.
- Trennzeichen (Delimiter): Um Anfang und Ende eines Suchmusters anzugeben, kommen alphanumerische Trennzeichen zum Einsatz. Diese können sich von Sprache zu Sprache unterscheiden, lediglich der Backslash ist ausgenommen.
- Gewöhnlich sind die Trennzeichen „Anführungszeichen“ oder /Forward Slashes/.
- Modifikatoren (Modifier): Angehängt an den regulären Ausdruck, sind Modifier zusätzliche Bedingungen für das Suchmuster angeben. Die gängigsten Modifikatoren sind i, s, m und x – i hebt beispielsweise die Restriktion auf Groß- und Kleinschreibung auf.
Reguläre Ausdrücke verstehen und nutzen
Vor allem in Webanwendungen und Unix-Skripten kommen RegExen zum Einsatz, auch Programme die auf der Eingabe von User*innen basieren, nutzen in der Regel reguläre Ausdrücke. Das Beherrschen der Syntax, der Metazeichen und Modifier ist zudem eine wichtige Fertigkeit, um schnelleres und eleganteres Coden zu meistern.
(ID:48768375)