【发布时间】:2020-01-07 05:25:28
【问题描述】:
我需要从某些文本中删除与特定模式匹配的行。一种方法是使用带有开始/结束锚点的正则表达式,如下所示:
var re = new Regex("^pattern$", RegexOptions.Multiline);
string final = re.Replace(initial, "");
这很好用,只是它留下一个空行而不是删除整行(包括换行符)。
为了解决这个问题,我为换行添加了一个可选的捕获组,但我想确保它包含所有不同风格的换行,所以我这样做了:
var re = new Regex(@"^pattern$(\r\n|\r|\n)?", RegexOptions.Multiline);
string final = re.Replace(initial, "");
这可行,但似乎应该有一种更直接的方法来做到这一点。有没有更简单的方法可以可靠地删除整行,包括结束换行符(如果有)?
【问题讨论】:
-
好吧,
@"^pattern$[\s-[\p{Zs}\t]]*"会满足您的需求。确保 CR 匹配,可能@"^pattern\r?$[\s-[\p{Zs}\t]]*"会做得更好。