Multiline Regex .Net

时间:2014-11-09 15:58:44

标签: .net regex

我目前正在尝试使用.Net 3.5中的Regex提取以下段落 在每个段落的开头是一个表示序列开始的识别短语,在本例中为StartMarker。此后,可变数量的行,每行都有一个换行符(\n)。段落的末尾用空行表示。

示例输入数据如下

StartMarker:
Line1
Line2
Line3
Line4
Line5

StartMarker:
Line6
Line7
Line8

StartMarker:
Line9
Line10

这应该产生以下匹配:

匹配1

StartMarker:
Line1
Line2
Line3
Line4
Line5

匹配2

StartMarker:
Line6
Line7
Line8

匹配3

StartMarker:
Line9
Line10

我已尝试(^StartMarker.*\n),但只匹配每个细分中的第一行。我已经在启用全局和多行选项的情况下使用了它。

我在考虑像(^StartMarker.*)([\s\S]+\n)这样的东西,但是这不起作用,因为[\s\S]+是贪婪的并且在StartMarker之后捕获所有内容直到文件结束。所以我真的不确定如何继续。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

使用此模式

(StartMarker:[\s\S]*?)(?=(?:\r?\n)+StartMarker:|$)

Demo

答案 1 :(得分:0)

如果您的模式是绝对使用此Regex

(StartMarker:(?:\sLine\d+)*)

否则,如果你的行可以使用此Regex

(StartMarker:(?:\s.+)*)