2010-06-30 21 views
105

Sto cercando di sostituire tutto lo #include "whatever.h" con #include <whatever.h> utilizzando la funzionalità Trova e sostituisci in Visual Studio 2005. Ho utilizzato la regex \#include \"[a-z\.h]+\" per trovare l'istruzione include. Ma mi chiedo come inquadrare il regex di sostituzione.Visual Studio, Trova e sostituisci, regex

non ha funzionato e non funzionerà; sostituisce la dichiarazione #include "whatever.h" con #include <[a-z.h]+>. Come devo inquadrare la regex di sostituzione per mantenere whatever.h così com'è?

risposta

168

Per le versioni prima studio visivo 2012:
Funziona quando faccio questo:
trovare include "{[a-zA-Z]+\.h}",
sostituirli con include <\1>.
Le parti più rilevanti per la tua domanda sono le parentesi graffe {} e il riferimento posteriore \1: \n riferimenti al n'th gruppo indicato da parentesi graffe nell'espressione di ricerca.

Per le versioni di Visual Studio 2012 & up:
partire con VS2012 .NET Framework espressioni regolari sono utilizzate. Quindi dovrebbe essere:
trovare include "([a-zA-Z]+\.h)",
sostituire con include <$1>.

+4

Questo sembra essere diverso dalla sintassi delle espressioni regolari standard che utilizza le parentesi per questa funzionalità. –

+2

È diverso, ma hey, non possiamo cambiarlo ... – Miel

+34

Ora è diverso in Visual Studio 2012. $ 1 dovrebbe essere usato al posto di \ 1.() sostituisce ora {}. Più coerente con tutti gli altri ora. http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx – oillio

Problemi correlati