如下语句:
<img src="http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007"  id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');"   onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'"/> 我用正则表达式:
"(http://*[^>]*.jpg)"
来匹配,结果总是
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg" alt="Babybear007"  id="headpic_area_1" onmouseover="APP.showList('headpic_area_1','headpic_body_1');"   onerror="this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg我要的结果是:
http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg
'http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg
请问要如何更改??
另外如果想把BMP,PNG,GIF这些格式一起匹配,需要怎么更改??谢谢了

解决方案 »

  1.   


    "(http://*[^>]*.(jpg|bmp|png|gif))"
      

  2.   


                string str="<img src=\"http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg\" alt=\"Babybear007\" id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/>  ";
                foreach (Match match in Regex.Matches(str, "http:[^'\"]+(jpg|bmp|gif|png)"))
                {
                    Console.WriteLine(match.Value);
                }
      

  3.   

    attribute可以是没有引号的
    即 还需要考虑边界符。so……
      

  4.   

    即使没有引号,ojlovecd的也已经满足需求了,因为带了bmp.jpg等后缀,如果不带扩展名就得加些边界判断,
    如' 或"号或\s或>等,至于'或"号的配对前面捕获一下加个\1就可以了。
      

  5.   

    http:[^'\"]+(jpg|bmp|gif|png)
    关于这个正则 慕白兄的说法我有所疑义
    如果alt引用的是图片原url输出
    如下所示
    string str = "<img src=http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg alt=http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/>  ";
                foreach (Match match in Regex.Matches(str, "http:[^'\"]+(jpg|bmp|gif|png)"))
                {
                    Console.WriteLine(match.Value);
                }
    我想输出的就不太是原预想值了OJ兄,你不要误会,我说的不能说明你的技术问题,而是没有留意而已,正则这块我离你还有很长的距离呢。
      

  6.   


                string str="<img src=\"http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg\" alt=\"Babybear007\" id=\"headpic_area_1\" onmouseover=\"APP.showList('headpic_area_1','headpic_body_1');\" onerror=\"this.src='http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg'\"/>  ";
                Regex reg = new Regex(@"(?is)src=(['""\s])(?<src>[^'""\s]*)\1");
                foreach (Match m in reg.Matches(str))
                {
                    Response.Write(m.Groups["src"].Value + "<br/>");
                }
    /*
    http://8.zol-img.com.cn/bbs/user_photo/1360/100/1359014_100.jpg
    http://icon.zol-img.com.cn/group/default_zoler/zoler_100.jpg
    */
      

  7.   


    cj205很仔细啊,借LS的改进一下
    Regex reg = new Regex(@"(?is)\ssrc=(['""\s])(?<src>[^'""\s]+(jpg|bmp|gif|png))\1");