regex (un)greedy
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
analysieren
array
beispiel
code
dank
dingern
gefunden code
http
jemand
klar danke
krieg
machen
sagen
stelle
stimmen
string
url
weise verwenden
zeichen
zutun
-
Hi, es geht um Reguläre Ausdrücke...
kann mir jemand genauer Erklären, was "greedy" und "ungreedy" (Bzw. lazy) genau bedeutet und macht?
Ich habe gegooglet und alles nur in english gefunden und hab es nicht wirklich verstanden :(
einigermaßen gut erklärt war es hier:
http://www.rexegg.com/regex-greed.html
weiß nur das es mit "+", "*" und "?" zutun hat,
aber was genau die nun an welcher Stelle machen, ist mir immernoch nicht ganz klar
danke schonmal im Vorraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das ist eig ganz einfach: Gehen wir mal von diesem Beispiel aus:
hallo {b}du{/b} da {b}draußen{/b} vor der {b}Tür{/b}.
Normalerweise, wenn du dies Analysieren möchtest, möchtest du alle Wörter zwischen den {b} Dingern. Wenn du eine Greedy Regex nutzt, zum Beispiel
wird nur eineinziger String gefunden:/{b}(.*){/b}/
.du{/b} da {b}draußen{/b} vor der {b}Tür
Greedy bedeutet also, dass die Regex bis zur letzten möglichkeit durchschaut, wirklich jedes Zeichen zu kriegen. Egal ob der gehoffte Endlimiter schon einmal erreicht wurde, vielleicht gibts den ja auch ein zweites mal, dann nimmt er die Zeichen bis dahin noch mit.
Macht man ihn ungreedy interessiert er sich nicht für das nach dem ersten Limiter, dann ist alles dannach schnurz. Ein beispiel wäre:
, welches in diesem Fall rausfiltert: Array("du", "draußen", "Tür")./{b}(.*?){/b}/
Ich hoffe, es ist klar geworden, was ich sagen wollte. Der Greedy schaut halt, dass er immer mehr Zeichen kriegt, der ungreedy gibt nach dem ersten Delimiter auf. Ich hoffe auch mal, dass die Regex stimmen, ich benutze sehr sehr seltend regex^^
Liebe Grüße -
danke, gut erklärt :)
kann ich das in irgendeiner weise verwenden um
das minus vor der 2 an die 2 anzuheften?
"4-3*-2"
damit das array dann so aussieht:
Array ( [0] => 4 [1] => - [2] => 3 [3] => * [4] => -2 )
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage