RegEx替换包含回车符的文本文件中的模式(使用Notepad2和C#)

时间:2011-06-01 15:18:37

标签: c# regex replace

我有一个包含以下字符串的文本文件:

--jonesj (release 00)
some sql goes here

--jonesj (release 01)
some sql goes here

--smithb (release 01)
some sql goes here

我想要做的是用空字符串替换所有已注释掉的SQL。结果字符串如下所示:

some sql goes here

some sql goes here

some sql goes here

在我的代码中实现之前,使用Notepad2作为我的测试依据,我正在尝试^--.*$的RegEx。但是,这似乎突出显示整个文本文件。我在RegEx很糟糕,希望有人可以帮助我。

3 个答案:

答案 0 :(得分:2)

您可以通过在多线模式下明确匹配行结束符\ r \ n来实现此功能。这样做的好处是也可以替换换行符(即评论所在的空行)

var input=@"--jonesj (release 00)
some sql goes here

--jonesj (release 01)
some sql goes here

--smithb (release 01)
some sql goes here";

var cleaned=Regex.Replace(
    input,
    @"^--.*(\r)?\n",
    string.Empty,
    RegexOptions.Multiline)

答案 1 :(得分:0)

我认为你可以逃脱这个:

var pieces = Regex.Split(input, "--[^\(]*\(release \d\d\)");

答案 2 :(得分:0)

您可以使用^--[^\n\r]*$确保通配符与换行符不匹配,并且在贪婪模式下只匹配整个文件。