Regexp: mehrfache Zeichenersetzung in einer Zeile
DanielS
- perl
Ich stehe hier grad etwas auf dem Schlauch, vielleicht habt ihr ja eine Idee.
Ich habe in einem HTML-Code folgende maskierte JS-Variable:
xajax.config.requestURI = "http://www.meinedomain.de/index.php?param1=value1&param2=value2&param3=value3";
Nun möchte ich alle darin enthaltenen '&' gegen ein '&' tauschen. Das können durchaus auch mehr als 2 Treffer werden. Mein bisheriger Pattern sieht so aus:
@(?<=xajax.)(.+)(&)(.+)@U
Die Prüfung auf 'xajax.' ist nötig, da in dem zu prüfenden Quelltext noch andere Vorkommen enthalten sind, die nicht verändert werden sollen.
Damit finde ich leider nur das erste Vorkommen. Da ich aber alle Ersetzungen benötige, hilft mir das leider so nicht weiter.
Habt ihr eine funktionierendere Lösung?
Vielen Dank
Daniel.
Hi,
Du brauchst auf jeden Fall das g-Flag am Ende des Ausdrucks. Siehe Tabelle, 3. Zeile von unten.
Wahrscheinlich gibt es aber dann noch Probleme, weil '.+' auch für & matched. Darum musst du dich wohl noch mit dem gierigen Verhalten von Regulären Ausdrücken auseinandersetzen und statt '.+' '.+?' schreiben.
mfG,
steckl
Ok, danke Dir. Werde ich nachher mal testen.
Grüße, Daniel.