Reguläre Ausdrücke (kurz auch RegEx genannt) sind Suchmuster, die in vielen Programmen für die Suche in Zeichenketten genutzt werden. Die Suche mit einem sogenannten „Pattern“ wird nicht mehr auf ein bestimmtes Wort eingegrenzt, sondern kann eine Menge von Wörtern treffen, auf die das Muster zutrifft. Ein RegEx-Muster sucht somit nicht nach einem bestimmten String sondern vielmehr nach bestimmten Textbausteinen, die individuell festgelegt werden können. Diese Textbausteine können aus ganz bestimmten Zeichen bestehen, Nummernfolgen enthalten oder aus Sonderzeichen an einer bestimmten Stelle bestehen.
iP(hone|ad|od)s?
Das oben genannte Muster trifft beispielsweise nicht nur das Wort iPhone, sondern auch iPad und iPod. Auch die Pluralform dieser Wörter wird mit diesem Ausdruck abgedeckt.
Auch Wortvariationen können mit regulären Ausdrücken gefunden werden. Der folgende Ausdruck findet z.B. verschiedene Schreibweisen des des Wortes „Foto“.
(Ph|F)(oto)s?
Reguläre Ausdrücke sind sehr mächtige Werkzeuge beim Suchen und Ersetzen. Besitzen die zu suchenden Wörter oder Zeichenkette eine bestimmte feste Struktur, so sind reguläre Ausdrücke das ideale Mittel für die Suche danach. Einige Anwendungsfälle werden später noch erläutert.
Syntax von regulären Ausdrücken
Um reguläre Ausdrücke effektiv einsetzen zu können, muss man zuvor den Aufbau eines RegEx verstehen. Die folgenden Metazeichen stehen für die Bildung eines regulären Ausdrucks zur Verfügung:
[ ] ( ) { } | ? + - * ^ $ \ .
Die eckigen Klammern werden für eine Zeichenbeschränkung verwendet. Wenn z.B. nur ganze Zahlen gefunden werden sollen, sieht die Notation wie folgt aus:
[0-9]+
Das nachgestellte „+“ bedeutet, dass eine Zahl einmal oder beliebig oft vorkommen darf. Mit diesem Ausdruck können z.B. folgende Ergebnisse erzielt werden: 5, 77, 4565401
Mit den runden Klammern kann ein Ausdruck gruppiert werden. Eine gute Übersicht über alle RegEx-Metazeichen ist auf der Wikipedia-Seite zu finden.
Bekannte RegEx-Muster
IP-Adressen:
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
E-Mail-Adressen:
[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})
RegEx testen
Es gibt mittlerweile sehr gute Onlinetools, mit denen man die eigenen RegEx-Ausdrücke testen kann. Das erleichtert das Entwickeln eines komplexen Ausdrucks enorm. Eine gute Spielwiese dafür bietet regexr.com