News Ticker

Reguläre Ausdrücke 12: Erweiterte und einfache Ausdrücke

Reguläre Ausdrücke sind nicht gleich reguläre Ausdrücke. Leider gibt es einige Varianten, die sich nicht nur historisch, sondern auch syntaktisch unterscheiden. Zudem kommt noch, dass nicht alle Programme alle regulären Ausdrücke unterstützen. Man muss sich also den Programmen, die man benutzt, anpassen. Heute sollen kurz und knapp die zwei wichtigsten Varianten vorgestellt werden.


Die zwei Varianten der regulären Ausdrücke sind die erweiterten regulären Ausdrücke (engl.: extended regular expressions) und die einfachen regulären Ausdrücke (engl.: basic regular expressions). Die erweiterten Regexps sind erstaunlicherweise einfacher als die einfachen Regexps. UNIX benutzte traditionell die einfachen regulären Ausdrücke. Nachdem das GNU-Projekt Open-Source weiter verbreiten wollte und somit viele Programme und Konzepte vereinfachte, wurden auch die die „einfachen“ Regexps aktualisiert. Diese waren nun noch einfacher – aus alter Sicht eben erweitert.

Genug der Geschichte und der Theorie. Was bedeutet das ganz konkret? Und was habt ihr die ganze Zeit gelernt? Um es ganz klar zu formulieren: In dieser Artikel-Serie wurden die erweiterten regulären Ausdrücke beschrieben. Der Unterschied ist, dass die Zeichen ? + { } | ( ) grundsätzlich eine spezielle Bedeutung haben. Will man solch ein Zeichen „matchen“, muss man es „escapen“ – also ein Backslash davor stellen. Wenn man die einfachen regulären Ausdrücke benutzt, ist es genau anders herum. Die oben genannten Zeichen haben per default keine besondere Bedeutung. Eine besondere Bedeutung werden durch einen vorgestellten Backslash erlangt (und nicht deaktiviert wie bei erweiterten Regexps).

Ein Beispiel: rot|grün ist ein erweiterter regulärer Ausdruck, wie er im letzten Artikel verwendet wurde. Die gleiche Logik in einem einfachen regulären Ausdruck ist rot\|grün. Das ist gar nicht so schwierig, solang man weiß welchen Zeichen ein Backslash vorangestellt werden muss. Das Tool grep, welches oft benutzt wurde, hat einen Schalter -E welcher den regulären Ausdruck als einen erweiterten (engl.: extended) interpretiert. Dies ist jedoch nur nötig, wenn man die oben genannten Zeichen in einem Ausdruck benutzt.

Die bekannten UNIX-Tools sed und vim benutzen z.B. einfache reguläre Ausdrücke. Oftmals kann man, wie bei grep, die Unterstützung für erweiterte Ausdrücke leicht aktivieren.