【发布时间】:2014-11-09 15:58:44
【问题描述】:
我目前正在尝试使用 .Net 3.5 中的正则表达式将以下内容提取为段落
每个段落的开头是一个标识短语,表示序列的开头,在本例中为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 之后的所有内容,直到文件结束。所以我真的不确定如何进行。如有任何帮助,我们将不胜感激。
【问题讨论】:
-
?在+之后使它不贪婪。 -
谢谢。我刚刚试过了。 (^StartMarker:)([\s\S]+?\n)。所以现在它捕获了从 StartMarker: 到下一行末尾的所有内容。关于如何在空行之前捕获它的任何想法?
-
有了这个不贪婪的位,我想我已经解决了。 ^StartMarker:[\s\S]+?^\n.谢谢你。