¿Hay alguna forma de hacer que Visual Studio realice un reemplazo de expresiones regulares en varias líneas (deje que la coincidencia cruce los límites de línea)? Sé que hay muchos editores que puedo usar para esto, pero parece extraño que esta característica se haya dejado fuera de Visual Studio. ¿Me estoy perdiendo de algo?
fuente

end) para que no sea codicioso. es decir:start(.*\n)*.*?endstartyend. Si desea encontrar el siguiente,enduse la versión no codiciosa:,(?s)start.*?endostart(.*\n)*?.*?end.(?s)?Las expresiones regulares han cambiado en Visual Studio 2013 . https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx
Para hacer coincidir una expresión en dos líneas, el código ahora sería:
StartOfExpression.*\r?\n.*EndOfExpressionfuente
</label>.*\r?\n.*<divdonde\r?\nestá el obvio carriage_return-new_line y.*para hacer coincidir las posibles pestañas / espaciosEsto funciona hoy en Visual Studio 2012:
fooPatternToStart.*(.*\n)+?.*barPatternToEndVea cómo la
(.*\n)+?pieza coincide en varias líneas, sin codicia.fooPatternToStarthay un patrón de expresiones regulares en su línea de inicio, mientrasbarPatternToEndque su patrón es encontrarlo en otra línea debajo, posiblemente muchas líneas debajo ...Ejemplo encontrado aquí .
Simple y efectivo :)
Nota: antes de VS2012, el patrón que funcionó fue:
fooPatternToStart.(.\n)+@.*barPatternToEndfuente
sprintf.*(.*\n)+?.*log.*(.*\n)+?.*__func__funciona para buscarlogentresprintfy__func__, ¡gracias! Aunque ... parece mirar al infinito para eso ... si solo hubiera una manera de limitar la cantidad de líneasNota: esta respuesta usa la sintaxis de expresiones regulares utilizada en Visual Studio hasta VS 2012. En VS 2013 y versiones posteriores, la sintaxis de expresiones regulares ha cambiado.
Puede incluir
\nen la expresión. Como ejemplo, aquí hay una expresión regular que utilizo para "limpiar" los scripts SQL generados automáticamente de cualquier cosa que no sea un procedimiento almacenado (coincidirá con los bloques de texto que comienzan con una línea que contiene "Objeto:" seguido de algo que no es "StoredProcedure", luego hacer coincidir las siguientes líneas hasta una línea consiste en la palabra "GO"):/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\nfuente
es posible que deba usar \ r \ n al final de su expresión.
fuente
Captura de caracteres multilínea no codiciosa, Visual Studio 2013+:
.*?\r?\n.*?Versión codiciosa en la respuesta de Giles Roberts.
fuente
Para todos los que vienen aquí mientras buscan VS Code, lo uso para hacer coincidir cualquier cosa desde
scriptcualquier lugar con 2 líneas nuevas (excluidas las líneas nuevas):script(.|\n)+?(?=\n\n)reemplazar
scripty\n\nhacer coincidir todo entre ellos.fuente