Allgemein

RegEx: Was bedeutet greedy?

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

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

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.

Weitersagen:

Über den Autor

Mirco Lang

Mirco Lang

Am Anfang war der C-64 des großen Bruders des besten Freundes in der Grundschule...

Der echte Technikwahn kam dann mit einer Ausbildung bei Saturn - als Computer noch erklärt werden mussten, Soundkarten benötigten, ein gutes Monatsgehalt kosteten und das Internet nur bei Nerds und mit 38 kbp/s lief, bestenfalls.

Ein Studium der Informationswirtschaft und ein paar Jahre als Redakteur bei Data Becker später, sitzt hier ein freier Journalist, der auf Old-School-Computing (cli ftw!), Free Software, Frickelei, Kodi und "Hundedinger" steht - und Grauseligkeiten wie Bild und Heftig.co zutiefst verabscheut.

Und sonst so? Sauerländer, Ex-BSI'ler, untalentierter Musikinstrumentebesitzer und seit 26 Jahren Skateboarder, ein ziemlich alter. Und manchmal kommt das abgebrochene Philo-Studium wieder durch ...

Kommentieren: