kostenloser Webspace werbefrei: lima-city


regex (un)greedy

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    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
    /{b}(.*){/b}/
    wird nur eineinziger String gefunden:
    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:
    /{b}(.*?){/b}/
    , welches in diesem Fall rausfiltert: Array("du", "draußen", "Tür").

    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
  4. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    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
    )
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!