dedlfix: Regex

Beitrag lesen

Tach!

ich bin kein Regex Profi! Bitte die Baseballschläger im Schrank lassen, wenn der "Ausdruck" bzw. Lösungsansatz Augenkrebs bei einigen Foren-Lesern/in verursacht.

Nö, lediglich den \ vor der ] kannst du weglassen. Ohne ein [ ist die nämlich harmlos.

1.) Mit folgendem Ausdruck: "/o(.*(]|));/msU" möchte ich alle Parts im $string matchen die mit 'o(' beginnen und bei erstem vorkommen auf '];' oder ');' enden. Allerdings werden auch Bereiche gematched die nicht "wirklich" zum Muster passen. Siehe unten Ergebnis Position 1 und 2!

Passen doch alle auf dein Muster. Definiere bitte in Worten, wann der Ausdruck nicht gefunden werden soll.

2.) Dann gibt es noch folgende Fälle. Da weis ich nicht wirklich wie ich an die Sache ran gehen soll. z.B. der Ausdruck(siehe oben) der innerhalb if()/elsif()/for()/foreach()/while()/usw vorkommen kann.
Vielleicht ist der Punkt 1 und 2 anders zu löschen. Also ohne Reguläre Ausdrücke! Ich bitte um konstruktive Vorschläge

Schreib einen Parser, der sich mit den Regeln des Codes auskennt und beliebige Verschachtelungen zu erkennen in der Lage ist. Der Tokenizer kann dir zumindest beim Erkennen der syntaktischen Elemente PHPs helfen. preg... ist zwar in der Lage, Rekursionen in Mustern zu erkennen (z.B. zusammengehörige Klammernpaare), aber das klappt nicht in jedem Fall (z.B. einzelne Klammern in Strings versteckt).

dedlfix.