多行文本如下:
<br />
<b>Notice</b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php</b> on line <b>42</b><br />
<br />
<b>Notice</b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php</b> on line <b>43</b><br />
<?xml version="1.0"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
省略若干代码请问我如何删掉<?xml version="1.0"?>以上的部分?[必结贴送分,谢谢了]

解决方案 »

  1.   

    补充:<?xml version="1.0"?>以上的部分是不确定有什么的,也可能什么都没有
      

  2.   

    ([\s\S]*)<\?xml version=""1.0""\?>([\s\S]*)
      

  3.   

    string sDetail = "<b>Notice </b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php </b> on line <b>42 </b>\r\n<b>Notice </b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php </b> on line <b>43 </b>\r\n<?xml version=\"1.0\"?> <rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">";
    Regex r;
    Match m;
    r = new Regex(@"([\s\S]*)<\?xml version=""1.0""\?>([\s\S]*)", RegexOptions.Multiline);
    m = r.Match(sDetail);
    sDetail = sDetail.Replace(m.Groups[1].ToString(), "");
    Console.Write(sDetail);
    Console.Read();
      

  4.   

    这个才可以    string sDetail = "<b>Notice </b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php </b> on line <b>42 </b>\r\n<b>Notice </b>:  Undefined index:  HTTP_USER_AGENT in <b>/include.php </b> on line <b>43 </b>\r\n<?xml version=\"1.0\"?> <rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">";
                Regex r;
                Match m;
                r = new Regex(@"([\s\S]*)(?=<\?xml version=""1.0""\?>)", RegexOptions.Multiline);
                m = r.Match(sDetail);
                sDetail = sDetail.Replace(m.Groups[1].ToString(), "");
                Console.Write(sDetail);
                Console.Read();
      

  5.   

    为什么都要先匹配一次再替换呢?直接替换就是了
    另外这种需求一定要加“^”,因为.NET的正则引擎对“^”做了优化,从开始位置匹配,无论第一次匹配成功还是不成功,都不会继续尝试匹配,可以有效的提升效率
    string result = Regex.Replace(yourStr, @"^(?:(?!<\/xml)[\s\S])*(?=<\?xml\s+version=""1.0""\?>)", "", RegexOptions.IgnoreCase);