如何使用java的正则表达式提取html标签
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();
}
}
展开全部
你的意思是不是用Java访问一个链接,在返回的数据中提取出放在标签中的数据,例如取出<img src=""/>这些标签中的数据
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询