如何使用java的正则表达式提取html标签

 我来答
德缘哥哥
2015-06-07 · TA获得超过217个赞
知道小有建树答主
回答量:193
采纳率:100%
帮助的人:64.3万
展开全部
//我随便写了一个工具类,getRegexData就是那个方法,你可以根据你的需求稍加改动即可因为我使用的
//URL 而不是HttpClient,所以数据是全部获取过来了,你自己改改吧!不懂再问我
package com.wdy.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 工具类
 * @author WDY
 *
 */
public class Tool {
    public static void main(String[] args) {
        System.out.println(getRegexData("<img[ ]*src.*?jpg\"", "<img src=\"img1.jpg\"><img src=\"img2.jpg\""));
        
        
        try {
            URL url=new URL("http://www.baidu.com");
            String stringData=getStringFromInputStream(url.openStream());
            System.out.println(stringData+"----------------------------------------");
            System.out.println();
            
            System.out.println(getRegexData("http://.{6,70}?(png|jpg)", stringData));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 给一个正则表达式,和数据,将正则匹配到的数据全数取出来
     * 
     * @param regex
     * @param data
     * @return List<String>
     */
    public static List<String> getRegexData(String regex,String data){
        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(data);
        List<String> resultList=new ArrayList<String>();
        int index=0;//搜索的位置
        String temp="";
        /* 从指定位置查找,如果找到了,就继续执行下面的代码 */
        while(matcher.find(index)){
            temp=matcher.group();//将匹配到的数据取出来放到集合中去
            resultList.add(temp);
            index+=temp.length();//将查找位置放到此时找到的数据后面
            System.out.println(index);
        }
        return resultList;
    }
    /**
     * 将输入流装成字符串
     * @param is
     * @return
     */
    public static String getStringFromInputStream(InputStream is)throws IOException{
        
        StringBuilder sbl=new StringBuilder();
        byte[] buff=new byte[1024*8];
        int len;
        int i=0;
        while((len=is.read(buff))!=-1){
            sbl.append(new String(buff,0,len,"utf-8"));
            System.out.println(i++);
        }
        System.out.println(sbl.length());
        return sbl.toString();
    }
}
godfather1103
推荐于2016-07-18 · TA获得超过3421个赞
知道大有可为答主
回答量:4501
采纳率:66%
帮助的人:1724万
展开全部
你的意思是不是用Java访问一个链接,在返回的数据中提取出放在标签中的数据,例如取出<img src=""/>这些标签中的数据
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱已沉殇
2015-06-07 · TA获得超过696个赞
知道小有建树答主
回答量:1402
采纳率:0%
帮助的人:536万
展开全部
什么意思?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式