1、代码:
package test;
public class GetImage {
//**
* @param args
*//*
public static void main(String[] args) {
String imgStr = "<img οnfοcus=/"a()/" SRC=/"http://zi.csdn.net/20090x60_3.jpg/" >";
//String imgStr = "<img οnfοcus='a()' SRC='http://zi.csdn.net/290x60_3.jpg' οnclick='b()' οnblur='()'>";
if(isImgStr(imgStr)){
System.out.println("IMG: " + img);
System.out.println("OK: " + getImgStr());
}
}
String img="";
public boolean isImgStr(String htmlStr){
java.util.regex.Pattern p_image;
java.util.regex.Matcher m_image;
boolean flag = false;
//图片链接地址,这种方式能得到图片地址,如果是本地的,就是不带http:开头的,也可以
String regEx_img = "<img(?:.*)src=(/"{1}|/'{1})([^//[^>]+[gif|jpg|jpeg|bmp|png]*)(/"{1}|/'{1})(?:.*)>";
p_image = java.util.regex.Pattern.compile(regEx_img,java.util.regex.Pattern.CASE_INSENSITIVE);
m_image = p_image.matcher(htmlStr);
while(m_image.find()){
flag = true;
img = img + "," + m_image.group();
}
return flag;
}
public String getImgStr(){
int start = ((img.indexOf("src")==-1) ? (img.indexOf("SRC")) : (img.indexOf("src")));
int isQuot = img.indexOf("/"", start);
img = img.substring(start);
//考虑图片地址用双引号、单引号问题
String imgs[] = (isQuot-start==4)?(img.split("/"", 3)):(img.split("'", 3));
return imgs[1];
}
}
2、总结:
很多时候我们需要从一段文本中提取出图片来单独处理,比如实现首页的图片轮换或者删除文章的时候需要对应的图片文件,以减少对空间的占用等,这段代码实现了从一段文本中提取出第一张图片的功能(多张的再修改一下),主要原理是采用正则表达式来找出图片,然后根据其中再提取出图片的真实地址