开发者

Capture multiple lines using Regular Expression (.Net)

I am trying to write a regular expression that can parse the text between < p >< /p > tags. There will be up to 3 lines of text in a row. I thought this might be possible using the (?= search ahead feature.

T开发者_如何学编程he code that I am currently using to get one line is as follows.

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

Is it possible to have one regular expression that can get the text between multiple rows of tags? Each line would need to be in its own group.

An example would be

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


First, this would be easy using the Html Agility Pack and you'd get a more robust solution.

But you can do it with regex in certain situations if you're 100% in control of the format and the input is coming from a trusted source:

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);
}

Output:

The
Grey
Fox
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜