Intentando buscar-reemplazar en Visual Studio Code, encuentro que su sabor Regex es diferente de Visual Studio completo. Específicamente, trato de declarar un grupo con nombre con el string (?<p>[\w]+)
que funciona en Visual Studio pero no en Visual Studio Code. Se quejará con el error Invalid group
.
Además de resolver este problema específico, estoy buscando información sobre el sabor de Regexes en Visual Studio Code y dónde encontrar documentación al respecto, para poder ayudarme con cualquier otra pregunta con la que pueda tropezar.
Full Visual Studio usa expresiones regulares .NET como se documenta aquí . Este enlace se menciona como la documentación para VS Code en otro lugar de Stackoverflow, pero no lo es.
[^]
patrón como un símbolo. Entonces, está claro que es el motor JS regex.Respuestas:
Rust Regex en la barra lateral Buscar / Reemplazar en archivos
Rob Lourens de MSFT escribió que la búsqueda de archivos usa Rust regex. La documentación del lenguaje Rust describe la sintaxis.
JavaScript Regex en el widget Buscar / reemplazar en archivo
Alexandru Dima de MSFT escribió que el widget find usa JavaScript regex. Como comentó Wicktor, la documentación de ECMAScript 5 describe la sintaxis. También lo hace la Guía de expresiones regulares de JavaScript de MDN .
Prueba la diferencia
La barra lateral Buscar en archivos no es compatible,
(?=foobar)
mientras que el widget Buscar en archivo admite esa sintaxis anticipada.Con respecto a Buscar / reemplazar con grupos
Para buscar / reemplazar con grupos, paréntesis uso
()
para agrupar y$1
,$2
,$3
,$n
para reemplazar.Aquí hay un ejemplo.
Antes de:
Después:
fuente
La respuesta de Shaun sigue siendo correcta, sin embargo, para agregar una actualización, recientemente VS Code agregó la opción de optar por usar el motor PCRE2 basado en Perl . Puede habilitar esto a través de su configuración de configuración.
Esto le permite realizar operaciones de expresiones regulares más avanzadas como lookaheads y backreferences . Pero como se indica a continuación, la expresión regular aún tiene que ser una expresión regular de JavaScript válida .
Y para obtener una ventaja adicional si terminó aquí tratando de hacer búsquedas en varias líneas, VS Code también agregó esa característica recientemente .
fuente