我想从字符串中删除所有 html 标签。我可以使用 REGX 来实现这一点。
但在字符串内部,如果它在角括号 <100> 内包含数字,则不应将其删除。
var withHtml = "<p>hello <b>there<1234></b></p>";
var withoutHtml = Regex.Replace(withHtml, "\\<[^\\>]*\\>", string.Empty);
结果:你好
但需要输出:你好 1234
您的 HTML 示例不是有效的 HTML,因为它包含非 HTML 标记。我认为您打算对尖括号进行编码。
我认为正则表达式不适合 HTML 解析。我建议使用 HTML 解析器(例如HTML Agility Pack)来执行此操作。
这是一个例子:
var withHtml = "<p>hello <b>there<1234></b></p>";
var document = new HtmlDocument();
document.LoadHtml(withHtml);
var withoutHtml = HtmlEntity.DeEntitize(document.DocumentNode.InnerText);
只需添加 HtmlAgilityPack NuGet 包和对 System.Xml 的引用即可使其工作。
不确定您是否可以在一个正则表达式中执行此操作,或者不确定正则表达式是否真的是其他人建议的正确方法。一个简单的改进,让你几乎有:
Regex.Replace(withHtml, "\\<[^\\>0-9]*\\>", string.Empty);
给出“hello there<1234>”然后您只需要替换所有尖括号。