web-dev-qa-db-fra.com

Comment référencez-vous un groupe de capture avec regex find et replace dans Visual Studio 2012, 2013, 2015 et VS Code

Je me rends compte qu'il y a une tonne de questions à ce sujet, mais aucune de celles que j'ai trouvées ne faisait spécifiquement référence à la version de VS à laquelle elles faisaient référence. Avec cette importante information manquante, je n’étais toujours pas capable d’utiliser avec succès les réponses que j’avais trouvées. Le plus commun était

  • Entourer de {}, capture d'affichage avec\1,\2,\n

Cependant, cela semble être l'ancienne méthode de recherche et de remplacement de regex dans Visual Studio, et cela ne fonctionne pas dans VS 2012.

221
SgtPooki

Pour rechercher et remplacer dans VS 2012 et VS 2015, procédez comme suit:

Exemple (merci à syonip)

Dans les options de recherche, assurez-vous que l'option 'utiliser des expressions régulières' est cochée et insérez le texte suivant comme texte à rechercher:

_platformActions.InstallApp\((.+)\)

Et le texte suivant pour le remplacer par:

this.Platform().App($1).Install()

Remarque: Comme le souligne SLaks dans un commentaire ci-dessous, la modification de la syntaxe des expressions rationnelles est due au passage de VS2012 au moteur de regex .Net standard.

Remarque: Un autre intervenant a souligné que cela fonctionne également dans le code Visual Studio (vscode).

324
SgtPooki

Pour ajouter un exemple, voici ce que je devais faire dans mon code:

Trouver quoi:

_platformActions.InstallApp\((.+)\)

Remplacer par:

this.Platform().App($1).Install()

Ceci remplace tout appel à InstallApp (x), par this.Platform (). App (x) .Install ().

* N'oubliez pas de cocher "Utiliser des expressions régulières" dans les options de recherche

15
syonip

Pour améliorer les réponses ci-dessus: Vous devez remplacer

_platformActions.InstallApp\((.+)\)

avec

this.Platform().App(${1}).Install()

Attention au $ {1} si vous souhaitez un jour ajouter un nombre derrière la capture. $18 essaiera d'insérer la 18ème capture de recherche, pas la première avec un 8 ajouté.

7
Luc Bloom

Si vous souhaitez utiliser des noms de groupe (en utilisant le même exemple que ci-dessus):

Trouver quoi:

_platformActions\.InstallApp\((?<mygroupname>.+)\)

Remplacer par:

this.Platform().App(${mygroupname}).Install()
6
Yepeekai