2011-05-26 71 views
6

我需要一個C#正則表達式來刪除/**/之間的所有內容,包括/**/。 因此,基本上刪除給定文本中的所有代碼註釋。正則表達式需要刪除C/C#註釋

+1

你真的不需要一個正則表達式。 – 2011-05-26 12:16:56

+0

那麼問題是什麼? – Reniuz 2011-05-26 12:19:53

+1

這並不容易。您的代碼可能包含「This:/ * boo */is no comment」這樣的字符串。 – Jens 2011-05-26 12:31:39

回答

6

應該是這樣的:

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

regex.Replace(input, ""); 
2

警惕,註釋可以嵌套。如果註釋可以嵌套像SQL,基本的正則表達式是要看起來像這樣:

/\*.*?\*/ 

然後您就需要循環,直到你剝什麼。

如果相反,評論第一*結束/ C一樣,你需要它貪婪與負前瞻:

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

我還需要忽略與形式

線評論
// blablabla 

所以,只是如果有人還需要這個,加入最後一部分修改正則表達式|(//.*)如此完整的形式將是:

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