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\((.*),(.*)\)
Remplacer par:model\[\\1\] = \\2
Mais Intellij ne semble pas reconnaître \\1
et \\2
comme des références en arrière. J'ai également essayé une seule barre oblique, mais cela ne fonctionne pas non plus.
java
regex
intellij-idea
Dónal
la source
la source
(foo)
remplacer:$1bar
'+ var +'
à- dire${var}
dans certaines chaînes de modèle et je n'ai pas pu comprendre pourquoi intellij ne terminerait pas le remplacement. s'avère$
doit être échappé dans le remplacement.En bref, vous devez utiliser
$1
to$n
pour remplacer les références arrière.\1
La syntaxe ne concerne que les références arrière dans la recherche.Dans IntelliJ 2016, la documentation intégrée à l'application est trompeuse. Voici une meilleure citation de la documentation complète:
Source: syntaxe des expressions régulières 2016.1, trucs et astuces
la source
L'aide contextuelle intégrée au produit pour les expressions régulières dans Idea 9.0 (et peut-être dans d'autres versions) semble incorrecte. Il déclare ceci:
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 antérieures, 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»
la source
IntelliJ IDEA / Reference / Regular Expression Syntax Reference
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 en utilisant la référence arrière (\ num, où num = 1..n). Si vous avez besoin de faire référence à 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 en utilisant le signe dollar ($ num, où num = 1..n). Si vous devez inclure les caractères entre parenthèses dans la sous-expression, utilisez "(" ou ")".
la source