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

Posted 爷的眼睛闪亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}
}


以上是关于Java 正则表达式提取标签中的属性(src 连接地址)等的主要内容,如果未能解决你的问题,请参考以下文章

优化Java中的正则表达式

C#怎么用正则表达式提取链接和图片标签的属性

正则表达式:(1)要求提取字符串中的img标签,并根据不同的情况将该img标签替换成不同的字符串。

php正则表达式提取img alt/title标签并替换

正则表达式替换 PHP 中的 html src 属性

正则表达式和 PHP - 从 img 标签中隔离 src 属性