Reguläre Ausdrücke
Karo
- regex
Hi,
Ich suche den Parameter, der veranlasst, dass im regulären Ausdruck der erste, kürzeste Treffer ermittelt wird.
Ich erinnere mich daran, dass der Begriff dafür das Gegenteil von gierig oder gefräßig genannt wird.
Um danach suchn zu können, wäre es nett, wenn Ihr mir schreiben könnt, wie dieser Begriff heißt.
@@Karo
Ich suche den Parameter, der veranlasst, dass im regulären Ausdruck der erste, kürzeste Treffer ermittelt wird. Ich erinnere mich daran, dass der Begriff dafür das Gegenteil von gierig oder gefräßig genannt wird.
Genügsam? Nicht gierig?
Um danach suchn zu können, wäre es nett, wenn Ihr mir schreiben könnt, wie dieser Begriff heißt.
LLAP 🖖
Hallo Karo,
https://www.tutonaut.de/regex-was-bedeutet-greedy/
Bis demnächst
Matthias
Tach!
Ich suche den Parameter, der veranlasst, dass im regulären Ausdruck der erste, kürzeste Treffer ermittelt wird.
Es gibt verschiedene Techniken, die Fundstelle einzuengen. Die Gierigkeit abzugewöhnen ist nur eine davon.
Wenn man beispielsweise alles bis zu einem bestimmten Trennzeichen finden möchte, dann findet "gib mir alles, gefolgt von Trennzeichen" sehr viel, auch Trennzeichen darin, wenn man die Gierigkeit nicht einschränkt. Die Alternative wäre, mit negierter Zeichenklasse zu suchen: "finde alles, was kein Trennzeichen ist, und davon beliebig viel": /[^;]*/
(mit Semikolon als Trennzeichen). Dabei hat man das Problem mit der Gierigkeit von vorn herein nicht.
dedlfix.
Hallo Karo,
es ist da entweder von „non-greedy“ (PHP) oder „lazy“ (Microsoft .net) die Rede.
Greediness schaltet man für einzelne Quantifizierer durch ein nachgestelltes ? ab, und je nach Sprache gibt es auch Schalter, die die ganze Regex auf non-greedy umstellen.
In PHP ist das ein U im Optionen-Bereich, das ? schaltet dann die greediness für einen Quantifizierer ein statt aus. In JavaScript, Java und .net kenne ich keine solche Option.
Rolf