Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#上执行此正则表达式?_C#_Regex - Fatal编程技术网

如何在C#上执行此正则表达式?

如何在C#上执行此正则表达式?,c#,regex,C#,Regex,我有一个字符串,可以有一些html标记。我想删除其中的一些标签(上面有数据),但不是所有的标签 事实上,我想删除和… 例如,如果我有字符串你好,再见,马可我想得到你好,马可 我怎样才能在C#上做到这一点?我想你已经了解了人们对这个问题的普遍看法。我建议您使用HTML解析器,例如 以下是一个示例: class Program { static void Main() { var doc = new HtmlDocument(); doc.LoadHt

我有一个字符串,可以有一些html标记。我想删除其中的一些标签(上面有数据),但不是所有的标签

事实上,我想删除

例如,如果我有字符串
你好,再见,马可
我想得到
你好,马可


我怎样才能在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(请参阅)。但您确实不想这样做。=)