2011-05-26 12 views
6

Ho bisogno di un regex C# per eliminare tutto tra /* e */ compreso il /**/. Quindi, in pratica rimuovi tutti i commenti di codice nel testo specificato.espressione regolare necessaria per rimuovere commenti C/C#

+1

davvero non hai bisogno di un'espressione regolare per quello. –

+0

Allora, qual è la domanda? – Reniuz

+1

Non è così facile. Il tuo codice potrebbe contenere stringhe come "This:/* boo */is no comment". – Jens

risposta

6

dovrebbe essere qualcosa di simile:

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

regex.Replace(input, ""); 
2

Diffidare che i commenti possono essere nidificate. Se i commenti possono essere nidificate come in SQL, l'espressione regolare di base è andare a guardare come questo:

/\*.*?\*/ 

Avrete quindi bisogno di ciclo finché non si è nudo nulla.

Se, al contrario, i commenti finiscono al primo */come in C, è necessario che avido con un lookahead negativo:

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

ero anche dovendo ignorare le linee di commenti con il modulo

// blablabla 

così, solo per se qualcuno anche bisogno di questo, modificare la regex aggiungendo l'ultima parte | (//.*) così la forma completa sarà:

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