Anhang G. Beschreibung der MySQL-Syntax für reguläre Ausdrücke

Ein regulärer Ausdruck ist ein mächtiges Werkzeug, um ein Muster für eine komplexe Suchoperation zu spezifizieren.

MySQL verwendet Henry Spencers Implementierung für reguläre Ausdrücke, die auf POSIX 1003.2 zugeschnitten ist. Siehe auch Anhang C, Danksagungen. MySQL benutzt die erweiterte Version, um Mustererkennung mit dem REGEXP-Operator in SQL-Anweisungen zu ermöglichen. Siehe hierzu Abschnitt 3.3.4.7, „Übereinstimmende Suchmuster“, und Abschnitt 12.3.1, „String-Vergleichsfunktionen“.

Dieser Anhang fasst mit Beispielen die Sonderzeichen und Konstrukte zusammen, die in MySQL für REGEXP-Operationen eingesetzt werden können. Wir wiederholen hier nicht jedes Detail von Henry Spencers regex(7)-Handbuchseite. Diese Seite ist in den Quelldistributionen von MySQL inbegriffen, nämlich in der Datei regex.7 unter dem Verzeichnis regex.

Ein regulärer Ausdruck beschreibt eine Menge von Strings. Der einfachste reguläre Ausdruck ist einer ohne Sonderzeichen. So erkennt beispielsweise der reguläre Ausdruck hello nichts anderes als den String hello.

Nichttriviale reguläre Ausdrücke verwenden spezielle Konstrukte, um mehr als nur einen einzigen String erkennen zu können. So passt beispielsweise der reguläre Ausdruck hello|word entweder auf den String hello oder auf den String word.

Als komplexeres Beispiel erkennt der reguläre Ausdruck B[an]*s die Strings Bananas, Baaaaas, Bs und und alle anderen Strings, die mit B anfangen, mit s enden und beliebig viele a- oder n-Zeichen dazwischen aufweisen.

Ein regulärer Ausdruck für den REGEXP-Operator kann alle folgenden Sonderzeichen und Konstrukte benutzen:

Um ein Sonderzeichen in einem regulären Ausdruck als Literal zu benutzen, setzen Sie zwei Backslash-Zeichen davor (\). Der Parser von MySQL interpretiert einen der Backslashes und die Bibliothek für reguläre Ausdrücke den anderen. Um beispielsweise den String 1+2 zu erkennen, der das Sonderzeichen + enthält, ist nur der letzte der folgenden regulären Ausdrücke der richtige:

mysql> SELECT '1+2' REGEXP '1+2';                       -> 0
mysql> SELECT '1+2' REGEXP '1\+2';                      -> 0
mysql> SELECT '1+2' REGEXP '1\\+2';                     -> 1

Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.