dedlfix: Regulärer Ausdruck

Beitrag lesen

ich habe einen einfachen regulären Ausdruck für die Syntax-Prüfung eines Datums:

([0-9]{2}.){2}[0-9]{4}

Mir ist schon bekannt, daß der auch 00.00.0000 durchläßt, aber das ist nicht das Problem. Ich möchte nur den Ausdruck negieren, d.h. aus z.B. dem String "Party am 25.07.2099" den String "Party am " extrahieren. Anstelle von "Party am " können natürlich beliebige und vor allem beliebig viele Zeichen stehen.

Du möchtest also foo gefolgt von bar, ohne dass bar Bestandteil des Ergebnisses wird.
Das bekommst du mit einer so genannten positiven Lookahead Assertion, die in Perl-RegEx-Syntax so aussieht: foo(?=bar)

Bezogen auf deine spezielle Aufgabenstellung (und auch gleich etwas eingekürzt) wäre das dann:

.*(?=(\d\d.){2}\d{4})