Ich möchte die Such- und Ersetzungsfunktion von IntelliJ verwenden, um die folgende Transformation durchzuführen:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
Ich habe folgendes versucht:
Zu findender Text: model.put\((.*),(.*)\)
Ersetzen durch:model\[\\1\] = \\2
Aber Intellij scheint nicht zu erkennen \\1
und \\2
als Rückreferenzen. Ich habe auch einen einzelnen Schrägstrich versucht, aber das funktioniert auch nicht.
java
regex
intellij-idea
Dónal
quelle
quelle
(foo)
ersetzen:$1bar
'+ var +'
um${var}
in einigen Template Strings und konnte nicht herausfinden , warum intellij nicht auf den Ersatz beenden würde. Es stellt sich heraus$
, dass beim Ersatz entkommen muss.Kurz gesagt, Sie müssen verwenden
$1
,$n
um Ersatzreferenzen zu ersetzen.\1
Die Syntax gilt nur für Rückverweise innerhalb der Suche.In IntelliJ 2016 ist die In-App-Dokumentation irreführend. Hier ist ein besseres Zitat aus den vollständigen Dokumenten:
Quelle: 2016.1 Syntax für reguläre Ausdrücke, Tipps und Tricks
quelle
Die produktinterne kontextbezogene Hilfe für Regex in Idea 9.0 (und möglicherweise anderen Versionen) scheint falsch zu sein. Darin heißt es:
Aber anscheinend, wie in früheren Antworten erwähnt und meiner Erfahrung nach, ist es wirklich \ $ n für Rückverweise und nicht \ n
Sie gelangen zu dieser kontextbezogenen Hilfe, indem Sie im Dialogfeld "Text ersetzen" auf den Link "[Hilfe]" neben der Radiooption "Regulärer Ausdruck" klicken
quelle
IntelliJ IDEA / Referenz / Syntaxreferenz für reguläre Ausdrücke
Stimmt mit dem Unterausdruck überein und merkt sich die Übereinstimmung. Wenn Sie den übereinstimmenden Teilstring innerhalb desselben regulären Ausdrucks verwenden müssen, können Sie ihn mithilfe der Rückreferenz abrufen (\ num, wobei num = 1..n). Wenn Sie den übereinstimmenden Teilstring irgendwo außerhalb des aktuellen regulären Ausdrucks verweisen müssen (z. B. in einem anderen regulären Ausdruck im Feld Ersetzen), können Sie ihn mithilfe des Dollarzeichens ($ num, wobei num = 1..n) abrufen. Wenn Sie die Klammerzeichen in den Unterausdruck aufnehmen müssen, verwenden Sie "(" oder ")".
quelle