使用正则表达式(.Net)捕获多行

时间:2009-12-18 05:34:50

标签: .net regex parsing

我正在尝试编写一个可以在<之间解析文本的正则表达式。 p> / p>标签。连续最多3行文本。我认为这可能是使用(?=提前搜索功能。

我目前用于获取一行的代码如下。

<p>([^']*?)<[/]p

是否可以使用一个可以在多行标签之间获取文本的正则表达式?每一行都需要在自己的组中。

一个例子是

 <p>The</p>
 <p>Grey</p>
 <p>Fox</p>

1 个答案:

答案 0 :(得分:2)

首先,使用Html Agility Pack可以轻松实现这一点,您将获得更强大的解决方案。

但如果您100%控制格式并且输入来自可靠来源,则可以在某些情况下使用正则表达式执行此操作:

Match match = Regex.Match(html, @"(?:<p>(.*?)</p>\s*)+", RegexOptions.Singleline);
if (match.Success)
{
    foreach (Capture line in match.Groups[1].Captures)
        Console.WriteLine(line.Value);
}

输出:

The
Grey
Fox