RegEx Golf

Montag, 10. März 2014, 20.06 Uhr

Das ist doch mal eine ccole Idee: RegEx Golf. Man muss eine RegEx bilden, in der bestimmte Wörter auftauchen und andere explizit ausgeschlossen werden.

Wer damit jetzt so gar nichts anfangen kann: RegEx bzw. „regular expressions“ oder „reguläre Ausdrücke“ sind Musterkennung in Zeichenketten in Perfektion. Eine RegEx ist ein formal genau definiertes Muster, das mit einer gegebenen Zeichenkette abgeglichen wird und als Ergebnis exakt den Teil herausfiltert, der im Muster beschrieben wird. RegEx sind einigermaßen komplex – ich selbst kenne da allenfalls die Anfangsgründe und versuche erst gar nicht, RegEx Golf zu spielen –, aber extrem leistungsfähig. Wann immer es darum geht, eine Zeichenkette mit bestimmten Mustern zu vergleichen (z.B. um zu ermitteln, ob eine Formulareingabe eine formal korrekte E-Mail-Adrese ist) sind reguläre Ausdrücke das richtige Werkzeug.

Ein ganz simples Beispiel: Es soll ermittelt werden, ob eine Zeichenkette genau ein @-Zeichen enthält, das weder als erstes noch als letztes Zeichen auftaucht. Genau ein @ ist einfach: @. Vor dem @ muss mindestens ein beliebiges Zeichen stehen, aber es darf kein weiteres @ sein. Für „kein @“ schreiben wir [^@] (die Klammern fassen Klassen zusammen – die hier aus nur einem Zeichen besteht –, das ^ ist in diesem Fall eine Negation). Da mindestens ein Zeichen, das kein @ ist, auftauchen muss, geben wir der Formulierung noch ein + mit auf den Weg und setzen das Ganze vor unser @-Zeichen, das gefunden werden soll: [^@]+@. Was für den Teil links vom @ gilt, gilt auch für den Teil rechts von ihm, wir erhalten also: [^@]+@[^@]+. Da dieses Muster für den kompletten String gelten soll, schließen wir ihn noch mit ^ – an erster Position im Muster ist ^ keine Negation, sondern markiert den Anfange einer Zeichenkette – und $ ein und erhalten so die fertige Regex ^[^@]+@[^@]+$.


Ihr Kommentar Name (erforderlich):

Mail (wird nicht publiziert) (erforderlich):

Website: