Rato Micefarmer: PCRE-Regex liefert komisches Ergebnis

Beitrag lesen

Guten Abend alle miteinander!

Ich habe ein Problem mit folgendem PCRE-Regex:

/(\)*({)?$([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)(})?/

Wenn ich den nun mit preg_match_all auf folgenden string anwende (4. an die Function übergebene Parameter: PREG_SET_ORDER)...

jajajajajajaj
ddddd
dfjfrkjdkfvjfdkhjsrtj lgujft
ja das ganze ist {$einfach_mal_bloed_sein}
$BLABLABLA {$da \$hee}
{d a} \{ \{ \ \\ \$ \$
\{$BLABBLA}
{${$blabla}} $nun
\$janoch}mals

... enthält der Ergebnisarray unter anderem:

[3] => Array
        (
            [0] => \$hee}
            [1] => \             [2] =>
            [3] => hee
            [4] => }
        )

[4] => Array
        (
            [0] => \{$BLABBLA}
            [1] => \             [2] => {
            [3] => BLABBLA
            [4] => }
        )

[6] => Array
        (
            [0] => $nun
            [1] => \             [2] =>
            [3] => nun
        )

[7] => Array
        (
            [0] => \$janoch}
            [1] => \             [2] =>
            [3] => janoch
            [4] => }
        )

Merkwürdig daran ist, dass im im jeweiligen 1.Subpattern entweder ein oder gar kein '' steht, egal wie viele '' vor '$' bzw. '{' stehen, im Gesamtergebnis jedoch alle Backslash "berücksichtigt" werden.
Im weiteren Scriptverlauf benötige ich jedoch das Ergenis des 1.Subpatterns. Das bekäme man zwar auch auf andere Art und Weise, doch warum soll ich den komplizierteren Weg über Stringfunktionen gehen wenn es doch einfacher ginge?
Kann mir hier jemand helfen bzw. mir erklären, warum das so ist?

mfg
Rato

--
§§§
Meine Postings basieren lediglich auf mein Wissen und können völliger Blödsinn sein.
§§§