思路:利用正则表达式检索字符串
正则表达式:
"<(img|IMG)(.*?)(>|></img>|/>)"
<img 或 <IMG 开头 任意内容 > 或 ></img> 或 /> 结尾
"(src|SRC)=(\"|\')(.*?)(\"|\')"
<src 或 <SRC = “ 或者 ‘ 任意内容 “ 或者 ‘结尾
依赖包:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
代码:
public static List<String> imgs(String content) {
//创建存放src值的list
List<String> urlList = new ArrayList<String>();
//匹配字符串中的img标签
Pattern p = Pattern.compile("<(img|IMG)(.*?)(>|></img>|/>)");
Matcher matcher = p.matcher(content);
boolean hasPic = matcher.find();
//判断是否含有图片
if(hasPic == true){
//如果含有图片,那么持续进行查找,直到匹配不到
while(hasPic) {
//获取第二个分组的内容,也就是 (.*?)匹配到的
String group = matcher.group(2);
//匹配图片的地址
Pattern srcText =
Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");
Matcher matcher2 = srcText.matcher(group);
if( matcher2.find() ) {
try {
urlList.add(matcher2.group(3));
}catch(Exception e){
e.printStackTrace();
}
}
hasPic = matcher.find();//判断是否还有img标签
}
}
return urlList;
}