我有一个C#字符串对象,它包含一个通用方法的代码,前面有一些标准的C-Style多行注释。删除C样式多行注释
我想我可以使用System.Text.RegularExpressions
删除评论块,但我似乎能够得到它的工作。
我想:
code = Regex.Replace(code,@"/\*.*?\*/","");
我可以在正确的方向指出?
我有一个C#字符串对象,它包含一个通用方法的代码,前面有一些标准的C-Style多行注释。删除C样式多行注释
我想我可以使用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);
你需要在星星之前逃离你的反斜杠。
string str = "hi /* hello */ hi";
str = Regex.Replace(str, "/\\*.*?\\*/", " ");
//str == "hi hi"
我使用了逐字运算符@,没有它,我得到编译错误 – Olaseni 2010-03-29 13:53:36
@Olaseni:查看它编译和工作的代码示例。 – 2010-03-29 13:56:48
您正在使用反斜杠逃脱正则表达式*
,但你还需要逃脱在C#字符串的反斜线完整的示例。
因此,@"/\*.*?\*/"
或"/\\*.*?\\*/"
此外,评论应该有一个空格,而不是空字符串替换,除非你确信你的输入。
你可以试试:
/\/\*.*?\*\//
因为有一些/正则表达式,它能够更好地使用不同的分隔符为:
#/\*.*?\*/#
+1问这个问题很巧妙地 – Anonymoose 2010-05-12 09:06:05