我想删除html中的title属性。但是,如果标题值有'<'字符。
要清理的文字: <a href="" title="bla bla bla" /><a href="" title=" bla bl<a bla" />
输出文字 <a href="" title="bla bla bla" /><a href="" />
正如您可以看到从文本中删除第二个标题,因为标题值包含&lt;炭。
请帮助
答案 0 :(得分:3)
在处理HTML时帮自己一个忙,并使用HTML解析器;例如Html Agility Pack。
然后这样的任务变得如此简单:
var html = "<a href=\"\" title=\"bla bla bla\" /><a href=\"\" title=\" bla bl<a bla\" />";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// select all nodes with title attribute
foreach (var element in doc.DocumentNode.SelectNodes("//@title"))
// and remove it
if (element.Attributes["title"].Value.Contains("<"))
element.Attributes["title"].Remove();
答案 1 :(得分:3)
合适的正则表达式(用非常简单的术语)可能是:
title="[^"]*<[^"]*"
这意味着title="
后跟任意数量的字符,这些字符不是"
,而是<
,然后是任何其他数量的字符,这些字符不是"
,最后是{{} 1}}
然后你可以按如下方式使用它:(注意引号在C#文字字符串中加倍了)
"
在我的快速测试中,这给出了期望的结果!