Regex im Editor für Suchen und Ersetzen

Ich komme da gerade nicht weiter.

Ich will alle Indices von assoziativen Arrays von ["<index>"] auf [’<index>’] umstellen (doppel- auf einfachhochkomma).

Das gültige Regex zum suchen wäre

„[(\S+)]“

und zum ersetzen

‚[\1]‘

und nach PHP 5.x müssen ja die Regexe dann in Delimiter gesetz werden, das wäre dann

/"[\S+]"/

Dieses Regex findet aber nix.

Was mache ich falsch?

Danke!
jwka

in der Bedingung müssen die doppelten Anführungsstriche maskiert werden, in der Ersetzung der Backslash, aber nicht die Klammern. Ausserdem muss der Stringanfang und Ende eindeutig sein.

$test='$myarray["XYZ"]';
print preg_replace('/\[\"(\S+)\"\]/',"['\\1']",$test);
//Ergebnis
$myarray['XYZ']

Tommi

Danke für die Hilfestellung. Im Code selbst hauen die RegEx immer ganz gut hin, da habe ich weniger Probleme.

Aber gib doch mal im Scripteditor bei der Suchfunktion Dein Regex ein.
Was ich jetzt durch rumprobieren rausgefunden habe, ist, dass die äusseren Delimiter nicht angegeben werden müssen.

Dieser Text als Regex gesucht:
["(\S+)"]

findet die Stellen, die ich ersetzen will.

Was aber wohl nicht funktioniert, ist das Ersetzen:

das RegEx- Bestandteil

\1 (oder \1 wenn ich den Backslash noch maskiere)

in der Ersetzen-Zeile.

Bei mir wird aus

$myarray[„XYZ“]

$myarray[’(1)’] bzw.
$myarray[’(\1)’] wenn ich den \ beim 1. Pattern (RegEx= \1) maskiere.

Dass man die Patterns in die Erserten-Zeile retten kann, ist aber vital für die Benutzung, sonst kann ich mir das RegEx auch sparen. Also irgendwie muss man doch ein Pattern in die Ersetzenzeile rüberbringen können?

Gibt es irgendwo eine Doku, welche Notation IPS im System selbst (also im Editor) für RegEx erwartet??? Ich habe nix gefunden.

Suchfunktion im Scripteditor? Nie benutzt. Gerade das erste Mal gesehen.

hier muss man das Replacement so angeben: [’$1’]

Tommi

Funzt. Danke! Wäre ich nicht drauf gekommen. :frowning:
jwka

ist so wie in Perl.
Eine Erläuterung der Syntax in der Doku wäre natürlich auch nicht schlecht.

Tommi