Regre-références RegEx dans IntelliJ
-
07-07-2019 - |
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.
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 ")".