8

En Visual Studio 2010, ¿cómo busca texto que no está dentro de un comentario de una sola línea? Por ejemplo, cómo encontrar "bas" en:En Visual Studio 2010, ¿cómo busca texto que no está dentro de un solo comentario de línea?

foo bar bas 

pero no en

foo bar // bas 

Tenga en cuenta que se debe buscar la línea:

foo/bar/bas 

(editar) Y no debería encontrar la línea:

foo // bar bas 
+0

Bien, entonces hice esta pregunta solo para poder volver a consultar mi propia respuesta. Desafortunadamente, tengo que esperar 8 horas para responder mi propia pregunta. Visual Studio no parece tener las típicas construcciones look-ahead-look-behind. Tiene una aseveración negativa de ancho cero similar. La sintaxis es ~ (x) lo que significa que el patrón no coincide con x en este punto del patrón. Usando esta estructura, se me ocurrió esto: ^ (. ~ (//)) * bas Que funciona muy bien, pero no coincidirá con una línea donde // son los dos primeros caracteres en la línea. Una versión para corregir que es: ^ ~ (//) (. ~ (//)) * bas – Tony

+0

Usted hizo una pregunta solo para responderla usted mismo? – iandotkelly

+0

Entonces, ¿publicaste ese comentario porque ya respondí tu pregunta? :) – Tony

Respuesta

6

Bien, entonces hice esta pregunta solo para poder volver a consultar mi propia respuesta.

Visual Studio no parece tener las típicas construcciones look-ahead-look-behind. Tiene una aseveración negativa de ancho cero similar. La sintaxis es ~ (x) lo que significa que el patrón no coincide con x en este punto del patrón. Utilizando esta construcción, se me ocurrió esto: ^(.~(//))*bas que funciona muy bien, pero no excluirá una línea donde // sean los dos primeros caracteres en la línea. Una versión para corregir que es: ^~(//)(.~(//))*bas

6

En el dial Visual Studio Find og, intente utilizar esta expresión regular (asegúrese de seleccionar Uso: Las expresiones regulares en las opciones de encontrar):

~(//[.:b]*)<bas> 

Esto debe encontrar todas las apariciones de la palabra bas que no están precedidos por //.

Tenga en cuenta que la sintaxis de expresiones regulares de Visual Studio es un poco diferente de la sintaxis convencional. Puede encontrar la referencia HERE.

+0

Esto no funciona en el ejemplo: foo // bar/bas donde bas está en un comentario, y por lo tanto no debería ser encontrado. Gracias por la respuesta, sin embargo, y por el enlace. Además, los límites de las palabras < and > probablemente no sean necesarios, aunque depende de lo que desee. – Tony

+5

Para usuarios de VS2012: "Visual Studio 2012 usa expresiones regulares de .NET Framework para buscar y reemplazar texto. En Visual Studio 2010 y versiones anteriores, Visual Studio utilizó la sintaxis de expresiones regulares en las ventanas Buscar y Reemplazar". Fuente: [Uso de expresiones regulares en Visual Studio] (http://msdn.microsoft.com/en-us/library/2k3te2cs (v = vs.110) .aspx) –

Cuestiones relacionadas