Question

Je souhaite utiliser la fonctionnalité de recherche et remplacement d'IntelliJ pour effectuer la transformation suivante:

// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar

J'ai essayé les solutions suivantes:

Texte à rechercher: model.put \ ((. *), (. *) \) Remplacer par: modèle \ [\\ 1 \] = \\ 2

Mais Intellij semble ne pas reconnaître \\ 1 et \\ 2 comme références arrière. J'ai également essayé une seule barre oblique, mais cela ne fonctionne pas non plus.

Était-ce utile?

La solution

IntelliJ utilise $ 1 pour les remplacements de références arrière.

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ères doivent avoir le format $ n plutôt que le format \ n.

Autres conseils

En bref, vous devez utiliser $ 1 pour $ n pour les remplacements . La syntaxe \ 1 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:

  

Si vous devez faire référence à la sous-chaîne correspondante 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 d'expression régulière 2016.1, Conseils & amp; Trucs

L'aide contextuelle intégrée au produit pour regex dans Idea 9.0 (et peut-être d'autres versions) semble être incorrecte. Il dit ceci:

  Back references
  \n
  Whatever the nth capturing group matched

Mais apparemment, comme mentionné dans les réponses précédentes et c’est mon expérience, c’est vraiment \ $ n pour les références en arrière, plutôt que \ n

Pour accéder à cette aide contextuelle, cliquez sur le lien "[Aide]" situé en regard de l'expression "Expression régulière". option de radio dans la section "Remplacer le texte". boîte de dialogue

IntelliJ IDEA & nbsp; / & nbsp; Référence & nbsp; / & nbsp; Référence de syntaxe des expressions régulières

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 faire référence à la sous-chaîne correspondante en dehors de l'expression régulière actuelle (par exemple, dans une autre expression régulière dans le 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 ")".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top