如何在C#上执行此regex
本文关键字:执行 regex | 更新日期: 2023-09-27 17:59:21
我有一个字符串,它可以有一些html标记。我想删除其中的一些标签(上面有数据),但不是所有标签。
事实上,我想删除<img />
和<div>...</div>
。
例如,如果我有一个字符串hello <div>bye bye</div> marco
Id想要得到hello marco
。
我如何在C#上做到这一点?
我想您已经了解了人们对使用regex解析HTML的普遍看法。我建议您使用HTML解析器,如HTML敏捷包。
这是一个示例:
class Program
{
static void Main()
{
var doc = new HtmlDocument();
doc.LoadHtml("hello <div>bye bye</div> marco <img src='"http://example.com'"/> test");
for (int i = 0; i < doc.DocumentNode.ChildNodes.Count; i++)
{
var child = doc.DocumentNode.ChildNodes[i];
if (child.NodeType == HtmlNodeType.Element && new[] { "div", "img" }.Contains(child.Name, StringComparer.OrdinalIgnoreCase))
{
doc.DocumentNode.RemoveChild(child);
}
}
var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
doc.Save(writer);
}
Console.WriteLine(sb); // prints "hello marco test"
}
}
对XML使用正则表达式不是一个好主意。根据语言的不同,您应该使用一些XML库。
在这种情况下,regex非常简单:
string s = "hello <div>bye bye</div> marco <img />";
Regex rgx = new Regex("(<div>[^<]*</div>)|(<img */>)");
s = rgx.Replace(s, "");