Gierigkeit bei Regular Expressions

Mit einem Reguläre Ausdruck (Regular Expression) wir ein Suchmuster für eine (oder mehrere) Teilzeichenketten innerhalb einer Zeichenmenge beschrieben. Reguläre ausdrücke können z. B. eingesetz werden um eine E-Mail-Adresse oder andere Formularfelder auf eine gültige Syntax (wurden nur erlaubte Zeichen eingegeben) zu prüfen.

Gierigkeit
Im Normalfall verhält sich ein Regulärer Ausdruck immer „gierig“, d. h. er umfasst die größtmögliche Anzahl von Zeichen, die dem Suchmuster entsprechen. Sofern dies nicht gewünscht ist, kann ein Suchmuster als „genügsam“ deklariert werden.

Beispiel: In einer Zeichenkette sind Platzhalter definiert, die über einen Regulären Ausdruck gefunden werden sollen, hier das Datumsformat ‚d.m.Y‘: Heute ist der {d:d.m.Y}, hallo {name}.

Der Reguläre Ausdruck ‚/{d:(.*)}/‘ würde nun im gierigen Verhalten die Teilzeichenkette ‚d.m.Y}, hallo {name‘ extrahieren. Um die für dieses Bespiel gewünschte Teilzeichenkette ‚d.m.Y‘ zu extrahieren muss der Ausdruck genügsam sein. Dies wird durch den „non-greedy“-Quantor „*?“ erreicht: ‚/{d:(.*?)}/‘.

Im PHP könnte der Aufruf dann wie folgt aussehen:
preg_match(‚/{d:(.*?)}/‘, ‚Heute ist der {d:d.m.Y}, hallo {name}‘, $matches);

Umfassende Informationen zu Regulären Ausdrücken: