Je souhaite utiliser la fonction de recherche et de remplacement d'IntelliJ pour effectuer la transformation suivante:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
J'ai essayé ce qui suit:
Texte à rechercher: model.put\((.*),(.*)\)
Remplacez par: model\[\\1\] = \\2
Mais Intellij ne semble pas reconnaître \\1
Et \\2
Comme références. J'ai également essayé une seule barre oblique, mais cela ne fonctionne pas non plus.
IntelliJ utilise $1
pour remplacement références arrières.
De l'aide d'IntelliJ:
Pour plus d'informations sur les expressions régulières et leur syntaxe, reportez-vous à la documentation de Java.util.regex Les références arrière doivent avoir le format $ n, plutôt que\n.
En bref, vous devez utiliser $1
À $n
Pour remplacer les références arrières. La syntaxe \1
Est uniquement pour les références arrières dans la recherche.
Dans IntelliJ 2016, la documentation intégrée à l'application est trompeuse. Voici une meilleure citation de la documentation complète:
Si vous devez référencer la sous-chaîne correspondante quelque part en dehors de l'expression régulière actuelle (par exemple, dans une autre expression régulière en tant que chaîne de remplacement), vous pouvez la récupérer à l'aide du signe dollar ($ num, où num = 1..n).
Source: syntaxe des expressions régulières 2016.1, Trucs et astuces
L'aide contextuelle intégrée au produit pour l'expression régulière dans Idea 9.0 (et peut-être d'autres versions) semble incorrecte. Il déclare ceci:
Références antérieures \N Quel que soit le nième groupe de capture correspondant
Mais apparemment, comme mentionné dans les réponses précédentes et d'après mon expérience, c'est vraiment\$ n pour les références arrière, plutôt que\n
Vous accédez à cette aide contextuelle en cliquant sur le lien "[Aide]" à côté de l'option radio "Expression régulière" dans la boîte de dialogue "Remplacer le texte"
IntelliJ IDEA/Référence/Référence de syntaxe d'expression régulière
Correspond à la sous-expression et se souvient de la correspondance. Si vous devez utiliser la sous-chaîne correspondante dans la même expression régulière, vous pouvez la récupérer à l'aide de la référence arrière (\ num, où num = 1..n). Si vous devez référencer la sous-chaîne correspondante quelque part en dehors de l'expression régulière actuelle (par exemple, dans une autre expression régulière du champ Remplacement), vous pouvez la récupérer à l'aide du signe dollar ($ num, où num = 1..n). Si vous devez inclure les caractères entre parenthèses dans la sous-expression, utilisez "(" ou ")".