Visual Studio, Buscar y reemplazar, regex

143

Estoy tratando de reemplazar todo #include "whatever.h"con el #include <whatever.h>uso de la función buscar y reemplazar en Visual Studio 2005. Usé la expresión regular \#include \"[a-z\.h]+\"para encontrar la declaración de inclusión. Pero me pregunto cómo enmarcar la regex de reemplazo.

\#include \<[a-z\.h]+\>no funcionó y no lo hará; reemplaza la declaración #include "whatever.h"con #include <[a-z.h]+>. ¿Cómo debo enmarcar la regex de reemplazo para whatever.hque quede como está?

bdhar
fuente

Respuestas:

225

Para versiones anteriores a Visual Studio 2012:
funciona cuando hago esto:
buscar include "{[a-zA-Z]+\.h}",
reemplazar con include <\1>.
Las partes más relevantes para su pregunta son las llaves {}y la referencia posterior \1: \nreferencias al enésimo grupo indicado por llaves en la expresión de búsqueda.

Para las versiones de Visual Studio 2012 y posteriores: a
partir de VS2012 .NET Framework, se utilizan expresiones regulares. Entonces debería estar:
buscar include "([a-zA-Z]+\.h)",
reemplazar con include <$1>.

Miel
fuente
55
Esto parece diferir de la sintaxis de expresiones regulares estándar que utiliza paréntesis para esta funcionalidad.
Goblin Alchemist
44
Ahora es diferente en Visual Studio 2012. Se debe usar $ 1 en lugar de \ 1. () ahora reemplaza a {}. Más consistente con todos los demás ahora. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio
1
Use [a-zA-Z0-9_]para capturar más nombres de archivo.
Reinier Torenbeek
1

Debe seleccionar Coincidir mayúsculas y minúsculas para expresiones regulares con mayúsculas y minúsculas. De lo contrario [az] no funcionará.ingrese la descripción de la imagen aquí

David Morrow
fuente