Visual Studio, rechercher et remplacer, regex


143

J'essaie de remplacer tous les #include "whatever.h"avec l' #include <whatever.h>utilisation de la fonctionnalité de recherche et de remplacement dans Visual Studio 2005. J'ai utilisé l'expression régulière \#include \"[a-z\.h]+\"pour trouver l'instruction include. Mais je me demande comment cadrer le regex de remplacement.

\#include \<[a-z\.h]+\>n'a pas fonctionné et ne fonctionnera pas; il remplace l'instruction #include "whatever.h"par #include <[a-z.h]+>. Comment dois-je encadrer l'expression regex de remplacement pour la conserver whatever.htelle quelle?

Réponses:


225

Pour les versions antérieures à Visual studio 2012:
cela fonctionne lorsque je fais ceci:
trouver include "{[a-zA-Z]+\.h}",
remplacer par include <\1>.
Les parties les plus pertinentes pour votre question sont les accolades {}et la référence arrière \1: \nréférences au nième groupe indiqué par des accolades dans l'expression de recherche.

Pour les versions Visual Studio 2012 et versions ultérieures: à
partir de VS2012, les expressions régulières .NET Framework sont utilisées. Alors ça devrait être là:
trouver include "([a-zA-Z]+\.h)",
remplacer par include <$1>.


5
Cela semble différer de la syntaxe standard des expressions régulières qui utilise des parenthèses pour cette fonctionnalité.
Goblin Alchemist

44
Il est désormais différent dans Visual Studio 2012. $ 1 doit être utilisé au lieu de \ 1. () remplace maintenant {}. Plus cohérent avec tout le monde maintenant. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio

1
Utilisez [a-zA-Z0-9_]pour capturer plus de noms de fichiers.
Reinier Torenbeek

1

Vous devez sélectionner à la fois Match Case et Expressions régulières pour les expressions regex avec casse. Sinon [az] ne fonctionnera pas.entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.