Take: Regexp: Unmatched Parentheses - WTF?

Beitrag lesen

Moin,

Hi,

Jetzt will ich name und value einzeln haben:
[([a-zA-Z0-9_]+)\="([^"]+)"]*
"Unmatched parenteses" spuckt PHP aus.

Du öffnest mit der ersten [ eine Zeichenklasse, die die Zeichen (, [, Buchstaben, Ziffern und den Unterstrich enthält, dann schließt du diese Zeichenklasse mit ] wieder. Danach kommt der Quantifier +, und danach eine runde Klammer ), zu der es keine öffnende gibt.

Warum zum Teufel muss man demn die Klammern nicht escapen? Das meinte ich mit meinem einleitenden Satz :(

Eckige Klammern mögen im Sonderangebot gewesen sein, aber du solltest sie trotzdem sparsamer verwenden.

Eigentlich nicht, ich hab ne Deutsche Tastatur, da sind eckige und geschweifte Klammern ein Gräuel. :D

Jedenfalls war das der entscheidende Hinweis, vielen Dank! Dieses Konstrukt diente dazu, dass mehrere name-value-Paare erlaubt sind (deswegen das *), was ja totaler Quatsch ist, weil ein RegEx auch mehrfach matcht.

Also:

([a-zA-Z0-9_]+)\="([^"\<\>]+)"

MfG ChrisB

Gruß,
Take