Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式删除带换行符的页脚文本_C#_Regex - Fatal编程技术网

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);
输出为预期输出:

消息正文诸如此类

最初的方法有几个问题。上述评论中有人指出了其中一些问题

以下是另外两个:

  • 当您执行
    (\r\n)
    时,您需要的是精确的字符序列CR,LF。但是,在某些操作系统中,换行符只能由
    \n
    (LF)表示。要使模式在这两种情况下都能工作,可以使用字符类,如:
    [\r\n]*
    。这意味着:“您可以按任何顺序找到的所有
    \n
    和/或
    \r
    字符序列”

  • 点(
    )与除(请参阅)之外的任何单个字符匹配。在某些regex风格中,它也可能在特殊条件下匹配换行符(请参见“(点)”),但在.NET中不匹配。这就是为什么我将应该匹配虚线后面所有内容的
    *
    替换为将匹配任何单词字符、空格字符、CR和LF的
    [\w\s\r\n]*


[-{34}]
应该是简单的
-{34}
<代码>[-{34}]表示“-”或“{”或“3”或“4”或“}”。最后的
\?
*
是什么?谢谢-这些都是非常好的提示。那个。*正试图得到一切!