Java 正则表达式提取标签中的属性(src 连接地址)等

public class Test {

public static void main(String[] args) {
String source = "<p><img src="https://xxxxx/xxx/xxxx/182cd48c587651767921868181f66ca8.jpg" />sdfasdfasdfsadfasdfasdfasdfasdfasdf</p><img src="https://xxxxx/xxxx/182cd48c587651767921868181f66ca8sdf.jpg" />";
System.out.println(getImgStr(source));
String htmlStr = "<p><video controls="controls" durationtime="72" filesize="27117469" height="200px" poster="https://xxxxxx/b439b0281450abce7f13b2920da04346.png" src="https://xxxxxxxxxx/b439b0281450abce7f13b2920da04346.mp4" style="">&nbsp;</video></p>";

System.out.println(getVideoStr(htmlStr));
}


public static Set<String> getImgStr(String htmlStr) {
Set<String> pics = new HashSet<>();
String img = "";
Pattern p_image;
Matcher m_image;
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();
// 匹配<img>中的src数据
Matcher m = Pattern.compile("src\s*=\s*"?(.*?)("|>|\s+)").matcher(img);
while (m.find()) {
pics.add(m.group(1));
}
}

return pics;
}

public static Map<String, String> getVideoStr(String htmlStr) {
Map<String, String> pics = new HashMap<String, String>();
String regEx_video="<video.*poster\s*=\s*(.*?)[^>]*?src\s*=\s*(.*?)[^>]*?>";
Pattern p = Pattern.compile(regEx_video,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(htmlStr);
String video="";
Map<String, String> map = new HashMap<String, String>();
while (m.find()) {
video=m.group();
Matcher mPoster = Pattern.compile("poster\s*=\s*"?(.*?)("|>|\s+)").matcher(video);
Matcher mSrc = Pattern.compile("src\s*=\s*"?(.*?)("|>|\s+)").matcher(video);
String poster ="";
String src="";
while (mPoster.find()){
poster=mPoster.group(1);
}
while (mSrc.find()){
src=mSrc.group(1);
}
map.put("poster", poster);
map.put("src", src);
}
return map;
}
}


原文地址:https://www.cnblogs.com/austinspark-jessylu/p/8252936.html