Visual Studio, Localizar e substituir, regex

143

Eu estou tentando substituir todos os #include "whatever.h"com #include <whatever.h>usando localizar e substituir funcionalidade no Visual Studio 2005. Eu usei o regex \#include \"[a-z\.h]+\"para encontrar a instrução de inclusão. Mas eu estou querendo saber como enquadrar o regex substituir.

\#include \<[a-z\.h]+\>não funcionou e não funcionará; ele substitui a declaração #include "whatever.h"com #include <[a-z.h]+>. Como devo enquadrar o regex de substituição para reter whatever.hcomo está?

bdhar
fonte

Respostas:

225

Para versões anteriores ao Visual studio 2012:
Funciona quando faço isso:
localize include "{[a-zA-Z]+\.h}",
substitua por include <\1>.
As partes mais relevantes para a sua pergunta são os chavetas {}e a referência posterior \1: \nreferências ao nono grupo indicado por chavetas na expressão de pesquisa.

Para versões do Visual studio 2012 ou superior:
são usadas expressões regulares do VS2012 .NET Framework. Portanto, deve haver:
encontre include "([a-zA-Z]+\.h)",
substitua por include <$1>.

Miel
fonte
5
Isso parece diferir da sintaxe de expressões regulares padrão que usa parênteses para essa funcionalidade.
Goblin Alquimista
44
Agora é diferente no Visual Studio 2012. $ 1 deve ser usado em vez de \ 1. () agora substitui {}. Mais consistente com todos os outros agora. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio
1
Use [a-zA-Z0-9_]para capturar mais nomes de arquivos.
Reinier Torenbeek
1

Você precisa selecionar Correspondência entre maiúsculas e minúsculas para expressões regex com maiúsculas e minúsculas. Senão [az] não funcionará.insira a descrição da imagem aqui

David Morrow
fonte