Faule und gierige Reguläre Ausdrücke? Was genau bei einer Regular Expression die Begriffe greedy und lazy bedeuten, ist ganz schnell an einem simplen Beispiel erklärt.

Bei Regulären Ausdrücken ist immer wieder von faulen und gierigen Quantifikatoren die Rede – nun, das üblichere Vokabular ist wohl RegEx, Quantifier, greedy und lazy …

Gierig

Anzeige

Im Grunde ist das Ganze ganz fix erklärt: Angenommen Ihr wollt alle Tags eines Texts, also alle spitzen Klammern samt jeglichen Inhalts treffen. Dann wird die „normale“, gierige Variante die erste Spitze-Klammer-Auf und die letzte Spitze-Klammer-Zu finden:

RegEx: \< .*\>
Text: <tag1>bla bla bla<tag2>
Match: <tag1>bla bla bla<tag2>

Ist ja auch logisch: \< findet Spitze-Klammer-Auf, .* findet beliebige Zeichenfolgen (eben inklusive spitzen Klammern) und \> findet die letzte Spitze-Klammer-Zu. Nun ist das aber nicht, was Ihr haben wollt – es sollen ja nur die Klammernpaare und die Texte dazwischen auf die RegEx zutreffen, nicht die Texte zwischen Klammerpaaren.

regex

Greedy: Ein langer Treffer – von der ersten Klammer-Auf bis zur letzten Klammer-Zu.

Nicht-gierig

Anzeige

Die Lösung ist simpel:

RegEx: \< .*?\>
Text: <tag1>bla bla bla<tag2> 
Match 1: <tag1> 
Match 2: <tag2>

In der RegEx ist also lediglich das ? hinzugekommen – und damit wird jeweils die nächste Spitze-Klammer-Zu gefunden. Diese Variante ist faul, fahndet nach einem schnellen Treffer und gibt viele einzelne aus, die erste Variante ist gierig und liefert lieber einen großen Treffer – daher die Bezeichnungen greedy und lazy.

regex

Lazy: Mehrere kurze Treffer von der ersten Klammer-Auf bis zur nächsten Klammer-Zu.

Das wohl beste Werkzeug zum Verständnis und für das Feintuning ist vermutlich Regex101.com. Ihr könnt hier RegExe und zu durchsuchenden Text eingeben und live sehen, was genau gefunden wird – alle Bestandteile der Regulären Ausdrücke und der Treffer werden farblich sauber dargestellt und vor allem detailliert erklärt!

regex

Regex101 ist einfach nur geil 😉

Wie man mit RegExen Dateien massenweise umbenennt, zeigen wir Euch hier für Windows und hier für Linux.

Über den Autor

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Stichwortschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn ich Dir helfen konnte und/oder Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen möchtest:
Spendier mir einen Kaffee via Paypal.

Kommentieren: