日期:2014-05-18  浏览次数:20520 次

急求获取文章内容所有的图片的正则表达式
因为正则不是很熟,特请大侠们看下这个正则应该怎么写!
<img src="http://www.inluxe.cn/assets/shared/images/grey0.gif" original="/uploads/news/2012/03/salvatore-ferragamo-02_1.jpg">
<div class="box page_details">
<h4>最新新闻 Latest News</h4>
<div class="mainleft ">
<h1>菲拉格慕 Salvatore Ferragamo 盛大举行 Signorina 香氛发布会</h1>
<p style="margin-top:-20px; margin-bottom:20px;">发布日期:2012/3/25</p>
<div class="details h20 lazyload">
<p>
<p>当地时间3月20日,菲拉格慕(Salvatore Ferragamo)为新款香氛Signorina在纽约举行盛大发布会。当晚发布会现场星光璀璨,众星云集,包括Emma Roberts、Annasophia Robb、Courtney Love、Kate Mara、Bianca Balti、the Brant Brothers等在内的明星均盛装亮相助阵。</p>
<p>
<img alt="Salvatore Ferragamo 02 1" src="http://www.inluxe.cn/assets/shared/images/grey.gif" original="/uploads/news/2012/03/salvatore-ferragamo-02_1.jpg">
</p>
</div>
<img src="http://www.inluxe.cn/assets/shared/images/grey2.gif" original="/uploads/news/2012/03/salvatore-ferragamo-02_1.jpg">

是这样的,因为里面文章一共有三个图片地址,我自己有写这个正则:<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>,但是这个是获取当前页所有的图片地址,也即是说上面一共有三个图片地址,他都获取到了,但是我的要求仅仅是获取上面内容<div class="box page_details">标签里面的图片:也就是仅仅只获取“<img alt="Salvatore Ferragamo 02 1" src="http://www.inluxe.cn/assets/shared/images/grey.gif" original="/uploads/news/2012/03/salvatore-ferragamo-02_1.jpg">”这个图片的地址,希望大侠们帮帮忙,给点意见。

------解决方案--------------------

C# code

 Regex re = new Regex(@"(?is)(?<=<div\s*class=""box page_details"">.*?<img\s*alt=""[^""]+""\s*src="")[^""]+(?="".*?</div>)", RegexOptions.None);
string str = re.Match("你要提取的字符串").Value;

//结果:http://www.inluxe.cn/assets/shared/images/grey.gif

------解决方案--------------------
C# code

 string patern = "(?is)<div\\s*class=\"box page_details\"\\s*>(.*)?(?<img><[img|IMG].*?src=[\'|\"](.*?(?:[.gif|.jpg]))[\'|\"].*?[/]?>)(.*)?</div>";
            string tempStr = File.ReadAllText(@"C:\3.txt", Encoding.GetEncoding("GB2312"));//tempStr 就是你的字符串
            Regex re = new Regex(patern);
            List<string> lists = new List<string>();
            MatchCollection sr = re.Matches(tempStr);

            foreach (Match me in sr)
            {
                lists.Add(me.Groups["img"].Value);//结果在lists
            }