wie negiert man mehr als ein Zeichen in einem Regulären Ausdruck

Reguläre Ausdrücke sind eine feine Sache, aber sie sind alles andere als einfach. Die Grundlagen erlernt man relativ schnell, aber getreu dem Motto „schlimmer geht’s immer“, gibt es Aufgaben, bei denen man mit seinem Latein schnell am Ende ist.

Bei Regulären Ausdrücken war das für mich immer die Negierung von Zeichenketten. Ein Beispiel ist das Apache error_log, auf das man immer ein Auge haben sollte. Aber nicht bei jedem ‚File does not exist‘ möchte man alamiert werden.

Nicht interessant sind solche Einträge wie:

[Thu Mar 23 10:52:23 2010] [error] [client 127.0.01] File does not exist: /var/www/foo/bar

Aber fatale PHP Fehler sollten schon auffallen:

[Tue Mar 24 16:50:57 2010] [error] [client 127.0.01] PHP Fatal error: foo bar

Die Lösung heißt negative lookaheads (?!negativePattern) und könnte für die obige Aufgabe so aussehen:

[error]s[clientsS+]s(?!Filesdoessnotsexist)

Fertig.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: