我有一个文本文件:
<page>
Line 1
Hello World
<endpage>
<page>
Another page
<endpage>
现在,我想将此文本拆分为<page>
和<endpage>
- 标记。我用以下正则表达式尝试了它:
Regex regex = new Regex(@"<page>.*?<endpage>");
MatchCollection matchCollection = regex.Matches(text);
但只有在<page>
和<endpage>
之间没有换行符时,这才有效。什么是正确的正则表达式来解决我的问题?
答案 0 :(得分:5)
为了能够使用.*
匹配多行,您需要启用RegexOptions.Singleline
选项:
Regex regex = new Regex(@"<page>.*?<endpage>", RegexOptions.Singleline);
答案 1 :(得分:1)
默认情况下,.
与换行符不匹配。这意味着只有当所有内容都出现在同一行上时,您的模式才会匹配。
为了使它在多行之间匹配,你需要RegexOptions.Singleline
(名称有点混乱,但想法是整个字符串被视为“单行”,而不是通过和测试每行的正则表达式。)