Peter: Perl Regex Frage

Beitrag lesen

Hallo,

ich bin aktuell mit meinem Latein am Ende und nach der Lösung zu googlen ist auch nicht so einfach möglich, da man das Problem schlecht in Worte fassen kann. Daher melde mich hier mit der Hoffnung, dass mir jemand bei meinem Problem helfen kann.

Ich suche einen regulären Ausdruck, mit welchem ich Variablennamen aus einem String extrahieren kann. Wenn ich einen Variablennamen auf Plausibilität prüfe, dann funktioniert der Ausdruck, da ich den Variablennamen vom Anfang bis zum Ende prüfe, also mit /^...$/. Der Ausdruck funktioniert jedoch nicht wenn ich eine Variable aus einer Zeichenkette extrahieren möchte.

Regex zum extrahieren von Variablen (vereinfacht)

\$[a-z]+(\.[a-z]+)*(\.set\(\))?
Zeichenketten mit zu extrahierenden Variablen

<§if $a !=>
<§if $a.b !=>
<§if $a.b.set() !=>
<§if $a.b.c !=>
<§if $a.b.c.set() !=>
Beispiel

<§if $a.b.c.set() !=>
Anstatt $a.b.c.set() wird $a.b.c.set extrahiert.

Mir ist die Problematik bekannt, wobei ich dies - wie bereits erwähnt - schlecht in Worte fassen kann. Die Variable passt beim Extrahieren bereits auf folgenden Teilausdruck $[a-z]+(.[a-z]+)* <--(.set())?, da ich beim Extrahieren nicht wie beim Prüfen von Anfang bis zum Ende prüfen kann. Daher erhalte ich eben als Ergebnis $a.b.c.set und nicht wie gewünscht $a.b.c.set().

Ich hoffe ich konnte einigermaßen erklären was ich meine und wäre für eine Lösung sehr dankbar.

Mit freundlichen Grüßen

Peter