dedlfix: Regex zu gierig trotz U

Beitrag lesen

Hi!

z.b. aus $var_3 soll $text[245] werden.
In "$searchvar" steht dann also z.b. $var_3 drin.
$newstring = preg_replace('#\'.$searchvar.'#', $textidname, $string1);
Die Ersetzung klappt, aber es wird teilweise zu viel ersetzt. Gefunden bzw. ersetzt werden auch die Variabelen $var_310 oder $var_37

Ja, denn das passt ja auch auf das Suchmuster. Das Ergebnis ist aber $textidname . '10 ...', also wird nur der Teil bis zur 3 ausgetauscht, ergo auch nur der gefunden.

Du willst aber nur das finden, was nach dem 3 mit einem Whitespace oder = oder Nicht-Wort-Zeichen oder was auch immer weitergeht, wobei du das Zeichen wiederum vom Ergebnis ausschließen willst. Also vielleicht eine Non-capturing Group oder mit einer Assertion probieren.

Ich habe versucht mit dem Modifier U auf nicht gierig umzuschalten.

Das bringt nichts, weil du kein Joker- mit Wiederholungszeichen verwendest, der gierig sein könnte.

Lo!