按标签分割的正则表达式
本文关键字:正则表达式 分割 标签 | 更新日期: 2023-09-27 18:02:41
我有一个textfile:
<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>
之间没有换行时才有效。什么是正确的正则表达式来解决我的问题?
为了能够与.*
匹配多行,您需要启用RegexOptions.Singleline
选项:
Regex regex = new Regex(@"<page>.*?<endpage>", RegexOptions.Singleline);
默认情况下,.
不匹配换行符。这意味着只有当所有内容都出现在同一行时,你的模式才会匹配。
为了使它在多行之间匹配,您需要RegexOptions.Singleline
(名称有点令人困惑,但其思想是将整个字符串视为"单行",而不是遍历和测试每一行的正则表达式)。