1

我想在一个字符串中找到所有空的 HTML 标签,例如:

<div></div>
<span>test</span>
<a></a>

并向该字符串中的所有空标签添加空格或字符:

<div>something</div>
<span>test</span>
<a>something</a>

我有一个匹配所有空标签的正则表达式,但我不确定替换标签的最佳方法是什么。

正则表达式:

<(\w+)(?:\s+\w+="[^"]+(?:"\$[^"]+"[^"]+)?")*>\s*</\1>
4

3 回答 3

3

使用HtmlAgilityPack

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);
于 2013-07-26T09:07:03.093 回答
1

描述

通过正则表达式处理这个可能不是最好的方法,但是因为可能有使用正则表达式的原因,例如“我不允许安装 HTMLAgilityPack”,那么这个表达式将:

  • 查找所有只是打开标签后跟关闭标签的标签
  • 将避免许多使 HTML 中的模式匹配与正则表达式困难的边缘情况

正则表达式:(<(\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>
于 2013-07-26T14:07:12.453 回答
0

使用Html Agility Pack进行 Html 解析从不 regex

于 2013-07-26T09:00:08.807 回答