Sehr schwieriges RegExp Problem

JavaUncle

Mitglied
Hey Leute

hier im Forum ist doch sicher ein RegExp Spezialist.

Ich lese aus einem Formular ziemlich komplizierte Regeln ein, die u.a. auch Variablen enthalten. Diese Strings sehen z.B. so aus:

Code:
eineVariable='datei=\'meineDatei.txt\';'; nochEineVariable = 'das ist "super"'

Ich möchte einerseits die Variablennamen matchen, und andererseits deren zugewiesene Werte. Wie im Beispiel zu sehen sind, liegt das Problem bei den Escape-Sequenzen. Denn der User kann ja wie gewohnt Singlequotes in den Wert packen, wenn er diese escaped.

meine RegExp sieht derzeit so aus:

Code:
([0-9a-zA-Z_]+)\s*=\s*(['"])([^(?:\2\2)]*)\2

ich teste sie mit dem gratis-Programm "The Regex Coach". Flags: i, g

The Regex Coach matcht mir hier nur so lange das was ich haben will, so lange nur eine einzige Variable mit Wertzuweisung im String steht.

Ist echt eine harte Nuss... wollte eigentlich vermeiden den String vorher zu präparieren und eine Symboltabelle zusammen zu schrauben, in der ich den String in seine minimalsten Bestandteile zerhacke.
 
Das \x5C steht für den umgekehrten Schrägstrich. Ist gelegentlich übersichtlicher als unzählige umgekehrte Schrägstriche hintereinander.

Noch eine Korrektur:
Code:
/([0-9a-zA-Z_]+)\s*=\s*('(?:[^\x5C']+|\x5C(?:\x5C\x5C)*')*'|"(?:[^\x5C"]+|\x5C(?:\x5C\x5C)*")*")/
Damit werden auch Sequenzen wie \\\', \\\\\', \\\\\\' etc. erkannt.
 
Zurück