C# 删除未使用的(空)HTML标记
我正在寻找清除/删除所有HTML标记的方法,因为它们什么都没有 例如:C# 删除未使用的(空)HTML标记,c#,regex,replace,html-agility-pack,C#,Regex,Replace,Html Agility Pack,我正在寻找清除/删除所有HTML标记的方法,因为它们什么都没有 例如: <p></p><div> to make links</div><b> </b> <a href="http://foo.com"></a><p> for linebreak add 2 spaces at end </p><strong></strong><i><
<p></p><div> to make links</div><b> </b>
<a href="http://foo.com"></a><p> for linebreak add 2 spaces at end
</p><strong></strong><i></i>
创建链接的
对于换行符,在末尾添加2个空格
致:
要为换行符创建链接,请在末尾添加两个空格
//我确信它并不复杂。使用此QA作为起点(),我们有regex
公共静态字符串RemoveUnusedTags(此字符串源代码)
{
return Regex.Replace(source,@“您可以使用如下正则表达式:
<(\w+)\s*.*?>\s*?</\1>
\s*?
其思想是查找包含空值的标记(带或不带属性)。对于您添加的示例输入,输出为:
<div> to make links</div>
<p> for linebreak add 2 spaces at end
</p>
创建链接
对于换行符,在末尾添加2个空格
]*>\s*]*>
尝试此操作。这将删除空标记。请参阅演示
所以,您实际上并不是在寻找一个正则表达式来解决这个问题,对吗?因为我们知道这将如何进行:@BradleyDotNET我觉得删除空元素实际上是正则表达式的一种有效用法。@Dai请随意回答。当我试图使用正则表达式来解决问题时,我通常会遇到两个问题:)我个人认为这是一个坏主意:如果你删除空标记,它会被击倒。CSS/Javascript可能会以Regex无法理解的方式使用空标记。这不会对所有内容都有效。只是为了澄清,该答案的作者指出,可能存在空的HTML,但与此Regex不匹配。
public static string RemoveUnusedTags(this string source)
{
return Regex.Replace(source, @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:""[^""]*""|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>", string.Empty, RegexOptions.Multiline);
}
<(\w+)\s*.*?>\s*?</\1>
<div> to make links</div>
<p> for linebreak add 2 spaces at end
</p>
<[^>]*>\s*<\/[^>]*>