正则表达式删除带有换行符的页脚文本
本文关键字:文本 换行符 删除 正则表达式 | 更新日期: 2023-09-27 17:59:21
我希望这很简单...我正在尝试使用正则表达式从文本块中删除页脚,这包括两个初始换行符,这是我的问题所在。
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);
输出是预期的:
Message body blah blah balh
最初的方法存在几个问题。abc667在上面的评论中指出了其中一些。
以下是另外两个:
当你做
('r'n)
时,你期待确切的字符序列CR,LF。但是,在某些操作系统中,换行符只能由'n
(LF( 表示。要使模式适用于这两种情况,您可以使用字符类,如下所示:['r'n]*
。这意味着:">您可以找到的所有'n
和/或'r
字符序列,以任何顺序"。点 (
.
( 匹配除 ' 之外的任何单个字符(请参阅文档(。在某些正则表达式风格中,它也可能在特殊条件下匹配换行符(请参阅此处的"(点("(,但在 .NET 中则不然。这就是为什么我将应该匹配虚线后所有内容的.*
替换为['w's'r'n]*
,该将匹配任何单词字符、空格字符、CR 和 LF。