删除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"