删除C样式多行注释

我有一个C#字符串对象,其中包含generics方法的代码,前面是一些标准的C-Style多行注释。

我想我可以使用System.Text.RegularExpressions删除注释块,但我似乎能够让它工作。

我试过了:

 code = Regex.Replace(code,@"/\*.*?\*/",""); 

我可以指出正确的方向吗?

使用RegexOptions.Multiline选项参数。

 string output = Regex.Replace(input, pattern, string.Empty, RegexOptions.Multiline); 

完整的例子

 string input = @"this is some stuff right here /* blah blah blah blah blah blah blah blah blah */ and this is more stuff right here."; string pattern = @"/[*][\w\d\s]+[*]/"; string output = Regex.Replace(input, pattern, string.Empty, RegexOptions.Multiline); Console.WriteLine(output); 

你在正则表达式中使用反斜杠来转义* ,但你还需要在C#字符串中转义那些反斜杠。

因此, @"/\*.*?\*/""/\\*.*?\\*/"

此外,除非您确定输入,否则应使用空格替换注释,而不是空字符串。

你可以试试:

 /\/\*.*?\*\// 

由于正则表达式中存在一些/,因此最好使用不同的分隔符:

 #/\*.*?\*/# 

你需要在星星之前逃避你的反斜杠。

 string str = "hi /* hello */ hi"; str = Regex.Replace(str, "/\\*.*?\\*/", " "); //str == "hi hi"