Komplizierte Regexp (Assertion)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Komplizierte Regexp (Assertion)

    Bei folgendem String soll das fettgeschriebene gematcht werden.
    Code:
    {foreach from="[b]arrayname[/b]" as="[b]foobar[/b]"}
    [b]kein oder mehr beliebige zeichen
    {foreach from="arrayname" as="foobar"}
    kein oder mehr beliebige zeichen
    {/foreach}
    kein oder mehr beliebige zeichen
    [/b]
    {/foreach}
    kein oder mehr beliebige zeichen

    Folgende Regexp tut den Job bei einmaligem Vorkommen der {foreach}{/foreach} Schleife.
    Code:
    =\{foreach from\="(\w+)" as\="(\w+)"\}(.*)\{/foreach\}=s
    Das Problem ist, dass diese Regexp bei einem Zweiten {foreach} innerhalb des äusseren {foreach} Blocks das erste aufkommen des {/foreach} erkennt und folgemäßig denkt, "fertig".

    Sprich: Bei vorkommen von einem oder mehreren {/foreach} 's in dem String, soll immer das letzte genommen werden.
    Darauf können aber noch Zeichen folgen, ^ und $ ist uns also keine Hilfe.

    Wär göttlich wenn mich jemand auf den richtigen Weg bringen könnte.
Lädt...
X