hallo.
der titel sagt es, ich moechte aus einer html templatedatei platzhalter in der form {$varname.name} mit einem regulaeren ausdruck finden, bei dem das plathalterelement '.name' optional ist. der platzhalter soll ueberall in einem html quelltext zu finden sein, ausser in html kommentaren und javascript.
dazu sind mir folgende regulaerer ausdruecke eingefallen:
Code:
'/.+({[$\w.]+}).+/'
der funktioniert auch sehr gut, aber ich bin mir nicht sicher ob der effizient ist. zudem werden auch pattern in der form der platzhalter erkannt, die sich in html kommentaren befinden.
um platzhaltern in html kommentaren nicht zu finden, habe ich folgendes geschrieben:
Code:
'/.+(?<!<--)({[$\w.]+})(?!-->).+/'
das funktioniert aber nur, wenn zwischen <!-- und dem platzhalter kein zwischenraum ist. setze ich aber ein \s? hinter das (?<!<--) dann funktionierts nicht - klar, dass (?<!<--) bezieht sich dann auch auf das \s [oder nicht?].
ich muesste also angeben, dass ein pattern der form "<!--" nicht vor einem "({[$\w]})" stehen darf. gibt es eine moeglichkeit "<!--" zu negieren, also etwa wie [^<] nur eben mit der eigenschaft, dass die von den eckigen klammern umschlossenen zeichen in genau der reihenfolge auftreten muessen?
hat jemand von euch eine ahnung, wie man das realisieren koennte?
Gruss,
caspar