2011-03-03 21 views
6

Finalmente encontré referencias a Visual Studio's regular expressions for Find and Replace y .NET's regular expression package, y ahora, por curiosidad morbosa, quiero saber: ¡¿por qué la diferencia ?!¿Por qué la diferencia entre las expresiones regulares de .NET y las expresiones regulares de Visual Studio?

Estoy seguro de que hay una razón técnica, histórica o de usabilidad, pero confundió a los bajeepers [sp? ;-)] fuera de mí al principio.

+0

Supongo que Visual Studio usa alguna implementación de C++ y .net alguna implementación de C# (opcionalmente usando IL codegen). – CodesInChaos

Respuesta

4

Me especulan que el VS expresiones regulares están diseñados para que coincida con el código montón así, después de haber definido de atajos útiles como :w de una palabra entera, o :i para un identificador de C++ o :q para una cadena entre comillas.

Por lo general, no es necesario que manejen datos arbitrarios que necesiten aserciones de lookaround y cosas así. O al menos eso era más bajo en la lista de prioridades.

+0

buenos pensamientos: alguna idea de por qué en la palabra elegirían usar dos puntos para su personaje de escape? Nunca escuché (no significa que no exista) una biblioteca de expresiones regulares que hizo eso ... – Crisfole

+0

No tengo idea. Tal vez Microsoft no le gusta Python :) –

+0

¡Aceptado, para el comentario de Python y la buena visión del código coincidente! – Crisfole

0

Tomado del enlace en Visual Studio expresiones regulares

Nota: Hay muchas diferencias de sintaxis entre las expresiones regulares que se pueden utilizar en Buscar y Reemplazar que tienen y los que son válidos en .NET Programación de framework. Por ejemplo, en la ventana Buscar y Reemplazar, llaves {} se usan para etiquetar expresiones para que sean reemplazadas: para cambiar cada aparición de does not to not no, usaría la expresión find {does} y la reemplazar expresión \ 1 no. Esta sintaxis de expresiones regulares difiere de .NET Framework, donde se usa la notación {} de cuantificadores, por lo que la expresión zo {1} se compararán todos los ocurrencias de z seguido por exactamente uno o, como en la zona, pero no en el zoológico

Las principales diferencias son sintácticas, aunque Visual Studio intenta incorporar un poco más de funcionalidad que la biblioteca de expresión regular estándar.

Cuestiones relacionadas