我想在一个字符串中找到所有空的 HTML 标签,例如:
<div></div>
<span>test</span>
<a></a>
并向该字符串中的所有空标签添加空格或字符:
<div>something</div>
<span>test</span>
<a>something</a>
我有一个匹配所有空标签的正则表达式,但我不确定替换标签的最佳方法是什么。
正则表达式:
<(\w+)(?:\s+\w+="[^"]+(?:"\$[^"]+"[^"]+)?")*>\s*</\1>
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(HtmlNode node in doc.DocumentElement.SelectNodes("//*").Where(x=>x.InnerText==""))
{
node.ParentNode.ReplaceChild(HtmlTextNode.CreateNode(input), node);
}
doc.Save(yourFile);
通过正则表达式处理这个可能不是最好的方法,但是因为可能有使用正则表达式的原因,例如“我不允许安装 HTMLAgilityPack”,那么这个表达式将:
正则表达式:(<(\w+)(?=\s|>)(?:[^'">=]*|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>)(<\/\2>)
用。。。来代替:$1~~~NewValue~~~$3

示例文本
注意第一行有一些非常困难的边缘情况
<a onmouseover=' str=" <a></a> " ; if ( 6 > 4 ) { funDoSomething(str); } '></a>
<div></div>
<span>test</span>
<a></a>
替换后的文本
<a onmouseover=' str=" <a></a> " ; if ( 6 > 4 ) { funDoSomething(str); } '>~~~NewValue~~~</a>
<div>~~~NewValue~~~</div>
<span>test</span>
<a>~~~NewValue~~~</a>
使用Html Agility Pack进行 Html 解析从不 regex。