Regex以捕获<;李>;标签
本文关键字:gt 标签 lt Regex | 更新日期: 2023-09-27 18:21:57
简单地说,我有这样的HTML:
<ul>
<li>Unorderd Item 1</li>
<li>Unordered Item 2</li>
<li>Unordered Item 3
<ol>
<li>Ordered Item 1</li>
<li>Ordered Item 2</li>
</ol>
</li>
<li>Unordered Item 4</li>
</ul>
我正在寻找一个正则表达式或某种性质的逻辑,它将<li>
标记替换为取决于其父列表元素是什么的东西
我可以直接使用RegEx,也可以使用(很可能是我在这里的路由).Net System.Text.RegularExpression类so:
Regex.更换
Regex.匹配
<--我知道我可以/应该使用HTML解析器,但这是与XSLT配置文档一起使用的。因此,使用Regex似乎是最好的方法。-->
期望输出:
<ul>
<Unordered>Unordered Item 1</Unordered>
<Unordered>....</Unordered>
<ol>
<Ordered>......</Ordered>
<Ordered>......</Ordered>
</ol>
<Unordered>.....</Unordered>
</ul>
我会为这个使用HtmlAgilityPack
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlString);
foreach (var li in doc.DocumentNode.Descendants("li"))
{
if (li.ParentNode.Name == "ul") li.Name = "Unordered";
if (li.ParentNode.Name == "ol") li.Name = "Ordered";
}
var newHtml = doc.DocumentNode.OuterHtml;
输出:
<ul>
<unordered>Unorderd Item 1</unordered>
<unordered>Unordered Item 2</unordered>
<unordered>Unordered Item 3
<ol>
<ordered>Ordered Item 1</ordered>
<ordered>Ordered Item 2</ordered>
</ol>
</unordered>
<unordered>Unordered Item 4</unordered>
</ul>