2011-05-26 69 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])))*\*+/)|(//.*)