Software

RegEx: Was bedeutet greedy?

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

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: bla bla bla Match: bla bla bla

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

Die Lösung ist simpel:

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

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.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"