Ich weiß, dass [ und ] Sonderzeichen in regulären Ausdrücken sind, aber ich kann nicht die richtige Escape-Zeichenfolge finden, um sie als bestimmtes Zeichen in einer Musterzeichenfolge behandeln zu können.
Was ich als Beispiel tun möchte, ist "[1 1 1]" in "1 1 1" umzuwandeln.
Kann man für so etwas Einfaches nicht einfach Ersatz verwenden?
a = "[1 1 1]";
b = substitute(a, "[", "", "]", "");
show(b);
"1 1 1"
kann sein Regex-Problem mit Escape-Zeichen
Sie kämpfen wahrscheinlich gegen das Entkommen von JMP, das mit dem Entkommen von Regex verwechselt wird @paul_vezzetti .
JMP-Strings machen einen Sonderfall von \[ und ]\ irgendwo in einer JMP-Zeichenfolge, um JMPs Escaping zu deaktivieren.
versuchen Sie \!\[ und verwenden Sie einfach ein leeres ] . Regex sollte dem ] nicht entkommen müssen, es sei denn, es befindet sich in einer [Zeichenklasse].
regex("[1 2 3]","\!\[(.*)]","\1")"1 2 3"
\!\ ist JMPs Flucht, um einen wörtlichen Backslash zu erstellen. Regex sieht dann das \[ und verhält sich wie erwartet.
Alternativ könnten Sie das \[ ... ]\ verwenden, aber es verursacht schlimmere Probleme, wenn Sie tatsächlich ]\ in der Regex benötigen und weniger klar erscheint:
regex("[1 2 3]","\[\[(.*)]]\","\1")Ich hoffe, dass JMP eine Zeichenfolge mit Regex-Anführungszeichen erhält, um dieses doppelte Escaping-Problem zu lösen.