1

我想从字符串中删除所有 html 标签。我可以使用 REGX 来实现这一点。

但在字符串内部,如果它在角括号 <100> 内包含数字,则不应将其删除。

         var withHtml = "<p>hello <b>there<1234></b></p>";
        var withoutHtml = Regex.Replace(withHtml, "\\<[^\\>]*\\>", string.Empty); 

结果:你好

但需要输出:你好 1234

4

2 回答 2

1

您的 HTML 示例不是有效的 HTML,因为它包含非 HTML 标记。我认为您打算对尖括号进行编码。

我认为正则表达式不适合 HTML 解析。我建议使用 HTML 解析器(例如HTML Agility Pack)来执行此操作。

这是一个例子:

var withHtml = "<p>hello <b>there&lt;1234&gt;</b></p>";
var document = new HtmlDocument();
document.LoadHtml(withHtml);

var withoutHtml = HtmlEntity.DeEntitize(document.DocumentNode.InnerText);

只需添加 HtmlAgilityPack NuGet 包和对 System.Xml 的引用即可使其工作。

于 2013-08-29T10:35:10.773 回答
0

不确定您是否可以在一个正则表达式中执行此操作,或者不确定正则表达式是否真的是其他人建议的正确方法。一个简单的改进,让你几乎有:

Regex.Replace(withHtml, "\\<[^\\>0-9]*\\>", string.Empty);

给出“hello there<1234>”然后您只需要替换所有尖括号。

于 2013-08-29T10:04:29.233 回答