我有以下的html,我尝试了许多正则表达式来删除只在ul标签和li标签之间的超链接内容/文本,但没有找到任何用于删除标签文本的正则表达式。我希望,当一个标签在ul和li标签下时,我想用空字符串替换标签文本。
<ul id="foot.dir" class="content" >
<li><a href="http://www.citysearch.com/aboutcitysearch/about_us" name="search_grid.footer.1.aboutCs" rel="nofollow" id="foot.dir.about">About</a></li>
<li><a href="http://www.citysearch.com/mobile-application" name="search_grid.footer.1.mobile" id="foot.dir.apps">Apps</a></li>
</ul>我已经尝试过这个正则表达式,但是它不工作,这里的输入是包含html的字符串。
input = Regex.Replace(input, @"<ul[^>]*?><li><a[^>]*?>(?<option>.*?)</ul></li></a>", string.Empty);请帮帮我。谢谢
发布于 2012-11-30 19:47:59
正则表达式不是解析HTML文件的好选择。
HTML既不严格,也不规范其格式。
使用htmlagilitypack
正则表达式用于正则表达式
您可以使用此代码通过HtmlAgilityPack检索它
HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
foreach(var item in doc.DocumentNode.SelectNodes("//li[a]"))// select li only if it has anchor tag
{
item.ParentNode.RemoveChild(item);//removed anchor tag
}
//dont forget to save我只想使用正则表达式删除标记文本。
Regex.Replace(input,@"(?<=<li[^>]*>)\s*<a.*?(?=</li>)","",RegexOptions.Singleline);发布于 2012-11-30 19:47:19
Regex is a poor choice for parsing HTML,特别是不一致的超文本标记语言。
我建议使用HTML Agility Pack来解析和更改HTML。
到底什么是超文本标记语言敏捷包?
这是一个敏捷的HTML解析器,它构建了一个读/写DOM,并支持普通的XPATH或XSLT (实际上您不需要理解XPATH或XSLT就可以使用它,不用担心……)。它是一个.NET代码库,允许你解析“网络之外”的超文本标记语言文件。该解析器对“真实世界”格式错误的HTML非常容忍。对象模型非常类似于所提出的System.Xml,只是针对的是超文本标记语言文档(或流)。
下载的源代码附带了许多示例项目,展示了如何使用该库。
https://stackoverflow.com/questions/13644563
复制相似问题