2011-05-26 24 views
6

Necesito una regex de C# para eliminar todo entre /* y */ incluyendo /**/. Por lo tanto, básicamente elimine todos los comentarios de código en el texto dado.expresión regular necesaria para eliminar los comentarios de C/C#

+1

realmente no necesita una expresión regular para eso. –

+0

Entonces, ¿cuál es la pregunta? – Reniuz

+1

Eso no es tan fácil. Su código puede contener cadenas como "This:/* boo */is not comment". – Jens

Respuesta

6

debe ser algo como esto:

var regex = new Regex("/\*((?!\*/).)*\*/", RegexOptions.Singleline); 

regex.Replace(input, ""); 
2

Tenga cuidado con los comentarios que se pueden anidar. Si los comentarios se pueden anidar como en SQL, la expresión regular básica va a tener este aspecto:

/\*.*?\*/ 

A continuación, necesita bucle hasta que estés pelar nada.

Si, por el contrario, los comentarios terminan en el primer */como en C, que lo necesite codiciosos con una búsqueda negativa hacia delante:

/\*((?!\*/).)*\*/ 
0

También estaba necesitando hacer caso omiso de las líneas de comentarios con la forma

// blablabla 

por lo tanto, sólo por si alguien también es necesario, modifique la expresión regular mediante la adición de la última parte | (//.*) por lo que la forma completa será:

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*) 
Cuestiones relacionadas