string p=@"<img[^>]+src=""([^"">]+)""[^>]+>";
            string fckStr=@"<p>asf<img width=""640"" height=""480"" alt="""" src=""/news/Uploads/20090810_212912_936_911.jpg"" /></p>";
          
 
            MatchCollection results = Regex.Matches(fckStr, @"<img[^>]+src=""([^"">]+)""[^>]+>", RegexOptions.IgnoreCase);                       foreach (Match m in results)
            {                Response.Write(m.Groups["src"].Value + "<br/>");            }
           
            return;小弟想拿到的是FCK产生的代码中完整的图片路径<p>asf<img width="640" height="480" alt="" src="/news/Uploads/20090810_212912_936_911.jpg" /></p>中的:
<img width="640" height="480" alt="" src="/news/Uploads/20090810_212912_936_911.jpg" />
下面这个正则:@"/<img([^\/>]+)src=""([^""]+)""([^\/>]+)\/>/is"在PHP中工作的很好,拿来就不好用了,不知道咋搞?小弟做了个新闻系统,推荐到首页的新闻要截取一部分新闻的内容作为导读,如果内容的前半部分就是一张图片就截取出来了一张图片,无法做导读用,得先获取到图片内容,然后去掉它再截取一定数量的字符作为导读。
或者有什么办法把所有的图片都给替换掉再截取,各位大哥还有什么好办法啊?

解决方案 »

  1.   

    注意“?”string p=@"<img[^>]+?src=""([^"">]+)""[^>]*>"; 
      

  2.   

    简单一点不更好吗
    <img[\s\S]+?\/>
      

  3.   

    除非对标签中的属性还有特殊要求,否则没有必要那么麻烦
    MatchCollection results = Regex.Matches(fckStr, @"(?i)<img[^>]*>");
      

  4.   


            public static IList<string> GetPicPath(string M_Content) 
            {
                IList<string> im = new List<string>();//定义一个泛型字符类
                Regex reg = new Regex(@"<img.*?src=""(?<src>[^""]*)""[^>]*>", RegexOptions.IgnoreCase);
                MatchCollection mc = reg.Matches(M_Content); //设定要查找的字符串
                foreach(Match m in mc)
                {
                    im.Add(m.Groups["src"].Value);
                }
                return im;
              
            }