jse.正则表达式--JAVA正则表达式,提取img的src问题!!!

/**
        * 得到网页中图片的地址
         */
       public static List<String> getImgStr(String htmlStr){   
            String img="";   
            Pattern p_image;   
            Matcher m_image;   
            List<String> pics = new ArrayList<String>();

       //     String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址  

              String regEx_img = "<img.*src\\s*=\\s*(.*?)[^>]*?>"; 
            p_image = Pattern.compile 
                    (regEx_img,Pattern.CASE_INSENSITIVE);   
           m_image = p_image.matcher(htmlStr); 
           while(m_image.find()){   
                img = img + "," + m_image.group();   
               // Matcher m  = Pattern.compile("src=\"?(.*?)(\"|>|\\s+)").matcher(img); //匹配src

               Matcher m  = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(img);

                while(m.find()){
                    pics.add(m.group(1));
                }
            }   
               return pics;   
        }  
         //重点在于正则表达式 <img.*src=(.*?)[^>]*?>   
         //               src=\"?(.*?)(\"|>|\\s+)       

       private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签

  private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG标签

  private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性

String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";   红色的 tag 是动态的变(指定标签)


    
       1. public static String getImgStr(String htmlStr){  
           2.         String img="",tmp="";  
           3.         java.util.regex.Pattern p_image;  
           4.         java.util.regex.Matcher m_image;  
           5.           
           6.         String regEx_img = "http://[([a-z0-9]|.|/|\\-)]+.[(jpg)|(bmp)|(gif)|(png)]";//图片链接地址  
           7.         p_image = java.util.regex.Pattern.compile(regEx_img,java.util.regex.Pattern.CASE_INSENSITIVE);  
           8.         m_image = p_image.matcher(htmlStr);  
           9.         while(m_image.find()){  
          10.             img = img + "," + m_image.group();  
          11.         }  
          12.         if(img.indexOf(",")>=0)  
          13.             return img.substring(1);  
          14.         else  
          15.             return img;  
          16.    } 



方法一:


http://www.cnblogs.com/jintan/archive/2009/10/31/1593639.html

package com.cn;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class img_src {
public   static   void   main(String[]   args)   {   
        String   html   =   "<html>\r\n"   +   
                "<head><title>test</title><head>\r\n"   +   
                "<body>"   +   
                "<P><IMG   height=\"100\"       src='abc.png'   weight=\"30\">abcdefg"   +  
                "<img   src='http://abc.xyz.com/123/456.jpg'   /><br>"   +   
                "<IMG   height=\"100\"       \r\n"   +   
                "       src=\"abc.jpg\"   \r\n"   +   
                "   weight=\"30\">abcdefg         \r\n"   +   
                "   <img   src=ttt.jpg>"   +   
                "   <img   src=123.jpg   />"   +   
//                 "<img   alt=\"src='abc'\">"   +   //这种我也无能为力   
                "</body></html>";   
          
        System.out.println(getImgSrc(html));   
    }   

    public   static   final   Pattern   PATTERN   =   Pattern.compile("<img\\s+(?:[^>]*)src\\s*=\\s*([^>]+)",   Pattern.CASE_INSENSITIVE   |   Pattern.MULTILINE);  
      
    public   static   List   getImgSrc(String   html)   {   
        Matcher   matcher   =   PATTERN.matcher(html);   
        List   list   =   new   ArrayList();   
        while   (matcher.find())   {   
            String   group   =   matcher.group(1);   
            if   (group   ==   null)   {   
                continue;   
            }   
            //   这里可能还需要更复杂的判断,用以处理src="...."内的一些转义符   
            if   (group.startsWith("'"))   {   
                list.add(group.substring(1,   group.indexOf("'",   1)));   
            }   else   if   (group.startsWith("\""))   {   
                list.add(group.substring(1,   group.indexOf("\"",   1)));   
            }   else   {   
                list.add(group.split("
\\s")[0]);  
            }   
        }   
        return   list;   
    }

}

方法二:

package com.cn;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
public static void main(String[] args) {
   String s = "&lt;IMG height=55 src=\"http://www.gobygo.com/TheGoByGo/images/book-channel.gif\" width=210 border=0 /&gt;";
   Pattern p1 = Pattern.compile("&lt;IMG[\\w\\s\\d\\p{Punct}]*/&gt;");
   Matcher m = p1.matcher(s);
   while (m.find()) {
    String str = m.group();
    Pattern p = Pattern.compile("src=\"[\\w\\s\\d\\p{Punct}]*\"");
    Matcher m1 = p.matcher(s);
    while (m1.find()) {
     String str1 = m1.group();
     str = str1.substring(5, str1.length() - 1);
     System.out.println(str);
    }
   }
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值