正则表达式,在两个单词之间找到一个单词

Lim*_*ing 1 .net c# regex

我有这个字符串

<p/><ul><li>test1<p/></li><li>test2<p/></li></ul><p/>
Run Code Online (Sandbox Code Playgroud)

我尝试做的是提取"li"标签中的所有"p"标签,但不提取其外部的"p"标签.

到目前为止,我只能通过提取所有"li"标签

\<li\>(.*?)\</li\>
Run Code Online (Sandbox Code Playgroud)

我迷失了如何在其中提取"p"标签.

任何指针都非常感谢!!

Mar*_*ers 5

使用HTML解析器而不是正则表达式更加可靠.使用HTML Agility Pack:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<p/><ul><li>test1<p/></li><li>test2<p/></li></ul><p/>");
IEnumerable<HtmlNode> result = doc.DocumentNode
                                  .Descendants("li")
                                  .SelectMany(x => x.Descendants("p"));
Run Code Online (Sandbox Code Playgroud)