regex - numeros - negacion expresion regular
¿Por qué Visual Studio usa una sintaxis de expresiones regulares tan extraña? (4)
¿Hay alguna razón por la que Visual Studio use una sintaxis tan extraña (por ejemplo, en el cuadro de diálogo buscar / reemplazar)?
En lugar de escribir /s*(/w+) = new Process/(/)
, tengo que escribir :b*{:a+} = new Process/(/)
.
Siempre estoy luchando con esta sintaxis, especialmente porque la sintaxis normal de .NET es la anterior.
Esta es una comparación incompleta entre las dos sintaxis:
What Visual .NET Comment
Studio
----------------------------------------------------------------
Tab/Spaces :b /s Either tab or space
Alphanumeric :a /w ([a-zA-Z0-9])
Subexpression {} ()
Substitution /n $n Substitutes the substring matched
by a numbered subexpression.
Backreference /n /n Matches the value of a numbered
subexpression.
----------------------------------------------------------------
Vea aquí ( Visual Studio , C# ) para más información.
Hay alguna razón para esto? ¿Es histórico? ¿Hay alguna ventaja?
Bueno, trataron de hacerlo "más fácil" de usar, al parecer, para un codificador de C ++.
Considera que proporcionaron nuevas expresiones no estándar, como
C/C++ Identifier :i Matches the expression ([a-zA-Z_$][a-zA-Z0-9_$]*) Quoted string :q Matches the expression (("[^"]*")|(''[^'']*'')).
Creo que la razón por la que tiene una sintaxis completamente diferente es que el usuario de expresiones regulares ve claramente que no es estándar y no es lo mismo que las expresiones regulares normales.
Lo que es bueno. En general, es un buen motor de expresiones regulares y fácil de usar.
Cito Coding Horror:
Sin embargo, te espera una sorpresa desagradable cuando intentas usar expresiones regulares para encontrar algo en Visual Studio. Al parecer, el IDE de Visual Studio tiene su propia sintaxis de expresión regular bastardizada. ¿Por qué? Quién sabe. Probablemente por razones de compatibilidad arcanas hacia atrás, aunque no tengo idea de por qué querrías llevar perpetuamente la locura. Evidentemente, hace que la gente sea multimillonaria, así que, ¿quién soy yo para juzgar?
http://www.codinghorror.com/blog/2006/07/the-visual-studio-ide-and-regular-expressions.html
Las buenas noticias:
Desde Visual Studio 2013, la búsqueda utiliza expresiones regulares .NET estándar :
Visual Studio utiliza expresiones regulares de .NET Framework para buscar y reemplazar texto. Para obtener más información sobre las expresiones regulares .NET, consulte .NET Framework Regular Expressions. Antes de Visual Studio 2012, Visual Studio usaba una sintaxis de expresión regular personalizada en las ventanas Buscar y Reemplazar. Consulte Conversiones de expresiones regulares de Visual Studio para obtener una explicación de cómo convertir algunos de los símbolos de expresiones regulares personalizados más utilizados a las versiones .NET.
Ya no es necesario aprender un extraño sabor de expresión regular.
Mi mejor y más honesta respuesta es porque son Microsoft, por lo tanto, pueden usar cualquier estándar que elijan. Algunos programadores en algún lugar probablemente decidieron que la sintaxis anterior era más clara para ellos o más fácil de codificar y, por lo tanto, se convirtió en ley canónica.