C# 正则表达式删除带换行符的页脚文本
我希望这很简单。。。我试图使用正则表达式从文本块中删除页脚,这包括两个初始换行符,这就是我的问题所在C# 正则表达式删除带换行符的页脚文本,c#,regex,C#,Regex,我希望这很简单。。。我试图使用正则表达式从文本块中删除页脚,这包括两个初始换行符,这就是我的问题所在 Message body blah blah balh {Line Break} {Line Break} ---------------------------------- Custom footer text 我一直在试验/\?(\r\n)(\r\n)([-{34}])/.的变体,但没有任何效果。我做了一个测试,结果是: [\r\n]*-{34}[
Message body blah blah balh
{Line Break}
{Line Break}
----------------------------------
Custom footer text
我一直在试验
/\?(\r\n)(\r\n)([-{34}])/.
的变体,但没有任何效果。我做了一个测试,结果是:
[\r\n]*-{34}[\w\s\n\r]*
代码如下:
var input = @"Message body blah blah balh
----------------------------------
Custom footer text";
var pattern = @"[\r\n]*-{34}[\w\s\n\r]*";
var clean = Regex.Replace(input, pattern, "", RegexOptions.Multiline);
Console.WriteLine(clean);
输出为预期输出:
消息正文诸如此类
最初的方法有几个问题。上述评论中有人指出了其中一些问题 以下是另外两个:
- 当您执行
时,您需要的是精确的字符序列CR,LF。但是,在某些操作系统中,换行符只能由(\r\n)
(LF)表示。要使模式在这两种情况下都能工作,可以使用字符类,如:\n
。这意味着:“您可以按任何顺序找到的所有[\r\n]*
和/或\n
字符序列”\r
- 点(
)与除(请参阅)之外的任何单个字符匹配。在某些regex风格中,它也可能在特殊条件下匹配换行符(请参见“(点)”),但在.NET中不匹配。这就是为什么我将应该匹配虚线后面所有内容的
替换为将匹配任何单词字符、空格字符、CR和LF的*
[\w\s\r\n]*
[-{34}]
应该是简单的-{34}
<代码>[-{34}]表示“-”或“{”或“3”或“4”或“}”。最后的\?
和*
是什么?谢谢-这些都是非常好的提示。那个。*正试图得到一切!