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?

bdhar
la source

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>.

Miel
la source
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

David Morrow
la source