-2

我有一个像这样的文本文件:

<page>
Line 1
Hello World
<endpage>
<page>
Another page
<endpage>

现在我想在<page>and <endpage>-tags 处拆分此文本。我尝试使用以下正则表达式:

Regex regex = new Regex(@"<page>.*?<endpage>");
MatchCollection matchCollection = regex.Matches(text);

但这仅适用于<page>and之间没有换行符的情况<endpage>。解决我的问题的正确正则表达式是什么?

4

2 回答 2

5

为了能够匹配多行,.*您需要启用该RegexOptions.Singleline选项:

Regex regex = new Regex(@"<page>.*?<endpage>", RegexOptions.Singleline);
于 2013-03-07T15:17:53.540 回答
1

默认情况下,.不匹配换行符。这意味着只有当所有内容都发生在同一行时,您的模式才会匹配。

为了使其匹配多行,您需要RegexOptions.Singleline(名称有点混乱,但想法是整个字符串被视为“单行”,而不是遍历并测试每行上的正则表达式)。

于 2013-03-07T15:18:31.240 回答