Visual Studio, Trova e sostituisci, regex


143

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

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

Risposte:


225

Per le versioni precedenti a Visual Studio 2012:
funziona quando lo faccio:
trova include "{[a-zA-Z]+\.h}",
sostituisci con include <\1>.
Le parti più rilevanti per la tua domanda sono le parentesi graffe {}e il riferimento posteriore \1: \nriferimenti all'ennesimo gruppo indicato dalle parentesi graffe nell'espressione di ricerca.

Per le versioni Visual Studio 2012 e versioni successive: a
partire da VS2012 vengono utilizzate le espressioni regolari di .NET Framework. Quindi dovrebbe esserci:
trova include "([a-zA-Z]+\.h)",
sostituisci con include <$1>.


5
Ciò sembra differire dalla sintassi standard delle espressioni regolari che utilizza le parentesi per questa funzionalità.
Goblin Alchemist,

44
Ora è diverso in Visual Studio 2012. Dovrebbe essere utilizzato $ 1 anziché \ 1. () ora sostituisce {}. Più coerente con tutti gli altri ora. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio

1
Utilizzare [a-zA-Z0-9_]per acquisire più nomi di file.
Reinier Torenbeek,

1

È necessario selezionare sia Match Case sia Regular Expressions per le espressioni regex con case. Altrimenti [az] non funzionerà.inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.