2010-11-25 13 views
11

¿Hay un completo lista de secuencias de escape de expresiones regulares en alguna parte? Encontré this, pero faltaba \\ y \e para empezar. Hasta ahora se ha llegado con este patrón de expresión que se espera que coincide con todas las secuencias de escape:C# Regex Escape Secuencias

@"\\([bBdDfnreasStvwWnAZG\\]|x[A-Z0-9]{2}|u[A-Z0-9]{4}|\d{1,3}|k<\w+>)" 

Respuesta

24

Alternativamente, si solo quiere escapar de una cadena correctamente, puede simplemente depender de Regex.Escape() que hará el escape necesario para usted.

Consejo: También hay un Regex.Unescape()

+0

En realidad, estoy tratando de deshacerlo. – mpen

+0

No pensé que hubiera un 'Unescape' por alguna razón ... sin embargo, no va a deshacer unescape' \ w' y '\ k' que necesito hacer también. Sin embargo, esto facilitará considerablemente el escape de todo lo demás ... ¡gracias! Dios ... Ojalá supiera de eso hace 8 horas>. < – mpen

+0

@Mark: La próxima vez prueba "regex unescape" en tu motor de búsqueda favorito :-) – VVS

6

Este MSDN page (expresiones regulares Elementos del lenguaje) es un buen punto de partida, con this subpage específicamente sobre secuencias de escape.

+1

Ah .... por último, una referencia completa. Sin embargo, dice "\ cuando es seguido por un personaje que no es reconocido como un personaje escapado en esta y otras tablas en este tema, coincide con ese carácter.", Pero cuando trato de poner '\ y' en una expresión regular, dice esa es una secuencia de escape no reconocida. ¿Porque eso? – mpen

+1

Backslash es un carácter de secuencia de escape de cadena C#. Ejemplo: "\ n" es una cadena con solo un carácter de nueva línea. Sin embargo, en la barra diagonal inversa también comienza las secuencias de escape. La secuencia de escape no reconocida es de "\ y" y no es una secuencia de escape C#. El uso de "\\ y" asegurará que no se intenten secuencias de escape cuando inicialice la cadena. – Gusdor

5

No se olvide de los millones y millones de posibles categorías: \p{Lu} Unicode, etc. \P{Sm}

hay demasiados de ellos, para adaptarse de forma individual, pero supongo que se podría utilizar algo en la línea de \\[pP]\{[A-Za-z0-9 \-_]+?\} (no probado)

Y hay también las cosas más simples que le falta a su lista: \., \+, \*, \?, etc, etc

Si sólo va a tratar de unescape una expresión regular existente, entonces usted podría intentar Regex.Unescape. No es perfecto, pero probablemente sea mejor que cualquier cosa que usted o yo podamos llamar en un corto espacio de tiempo.

+0

Yuck ... no deseando manejar este caso. (Gracias) – mpen

Cuestiones relacionadas