如何在C#上执行此正则表达式?
我有一个字符串,可以有一些html标记。我想删除其中的一些标签(上面有数据),但不是所有的标签 事实上,我想删除如何在C#上执行此正则表达式?,c#,regex,C#,Regex,我有一个字符串,可以有一些html标记。我想删除其中的一些标签(上面有数据),但不是所有的标签 事实上,我想删除和… 例如,如果我有字符串你好,再见,马可我想得到你好,马可 我怎样才能在C#上做到这一点?我想你已经了解了人们对这个问题的普遍看法。我建议您使用HTML解析器,例如 以下是一个示例: class Program { static void Main() { var doc = new HtmlDocument(); doc.LoadHt
和…
例如,如果我有字符串你好,再见,马可
我想得到你好,马可
我怎样才能在C#上做到这一点?我想你已经了解了人们对这个问题的普遍看法。我建议您使用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"
}
}
类程序
{
静态void Main()
{
var doc=新的HtmlDocument();
doc.LoadHtml(“你好,再见,马可测试”);
对于(int i=0;i
对XML使用正则表达式不是一个好主意。根据语言的不同,您应该使用一些XML库
在这种情况下,正则表达式非常简单,不过:
string s = "hello <div>bye bye</div> marco <img />";
Regex rgx = new Regex("(<div>[^<]*</div>)|(<img */>)");
s = rgx.Replace(s, "");
string s=“你好,再见,马可”;
Regex rgx=new Regex(“([^Haha“用Regex解析HTML”是有史以来最好的帖子:)@markzzz:你需要在某个时候实际解析它,一旦你学会了如何处理这样一个库,它实际上比编写Regex更容易,因为你可以使用在你思考的层面上说话的工具(例如,元素的XPath)不要扭曲思维。学一次,然后用它来做。请不要鼓励这样做。@fiver,不,它解决了他的问题。即使这样解决问题是个坏主意。如果其他div中有div,它将不起作用,这就是为什么正则表达式对这类事情不是一个好主意。真的!如果是嵌套div,它会'不要破坏XML-它只会删除最里面的div。但我完全同意。Regex+XML=Disaster@FilipEkberg:我不知道如何解决这个问题,是吗?顺便问一下,你为什么要谈论XML?我是在HTML上做的:)请注意,正则表达式无法正确处理其他div中的div,因此它们不适合此场景。我知道。还有其他想法吗?@William:他正在使用C#。NET regex实现可以处理嵌套div(请参阅)。但您确实不想这样做。=)