除了一个标签外,删除所有HTML标记

4
我有一些代码可以删除所有HTML标签,但我想要删除除</td></tr>标签之外的所有HTML标签。如何做到这一点?
public string HtmlStrip( string input)
{
    input = Regex.Replace(input, "<input>(.|\n)*?</input>", "*");
    input = Regex.Replace(input, @"<xml>(.|\n)*?</xml>", "*"); // remove all <xml></xml> tags and anything inbetween.  
    return Regex.Replace(input, @"<(.|\n)*?>", "*"); // remove any tags but not there content "<p>bob<span> johnson</span></p>" becomes "bob johnson"
}

10
刚刚想起来了https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454。 - Ilya Ivanov
2
看到了,但不理解... - Ashekur Rahman Molla Asik
2
@IlyaIvanov 让我想起了同样的事情。OP,使用正则表达式解析HTML是一项危险的冒险。你应该使用其他方法(比如将你的HTML表示为XML)来代替。 - tnw
所以你想删除除了两个“闭合”标签之外的所有HTML?那么开放性标签(例如<td><tr>)呢? - Kenneth K.
可能是这个问题的重复:RegEx匹配除XHTML自封闭标签外的开放标签 - joce
我想要同时删除开头标签。 - Ashekur Rahman Molla Asik
2个回答

6
正则表达式不适用于解析XML或HTML。看看HTML Agility Pack。 HTML Agility Pack

1
不需要太长的答案! - Dmitriy Khaykin

0

移除所有 HTML 标签,但保留 td 和 tr 标签。

输入 = Regex.Replace(input, @"<(?!td|/td|tr|/tr).*?>", "");


1
使用代码格式化功能以获得更好的可读性。在问题的背景下解释你提到的代码的目的是什么。 - Stephane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接