java正则表达式提取html中的图片标签img src=
需求:将网页分享给其他人,JShare的分享模板如下:
其中有标题(红色)、内容(黄色)、图片(绿色),但是接口中没有给图片的URL,而html格式的内容中有<img src="http://……">标签,需要去内容中自己提取第一张图片作为分享的图标,如下:
所以,这个时候我们的需求就一目了然了:用正则表达式从繁杂的内容中找到我们需要的图片。
解决:
1、正则表达式:(http://jszx-jxpt.cuit.edu.cn/JavaAPI/java/util/regex/Pattern.html)官方API,供查询了解
2、代码查找:
一、先找到<img src="">标签,用到的正则表达式("<img.*?>")
代码如下:
public static List<String> getMatchString(){List<String> pics = new ArrayList<>(); // 因文件可能有多张图片,故用集合来存储结果Pattern compile = null;if (isDistinguish){ // isDistinguish:是否区分大小写compile = Pattern.compile("<img.*?>"); // "<img.*?>" : 获取标签的正则}else{compile = Pattern.compile("<img.*?>", Pattern.CASE_INSENSITIVE);}Matcher matcher = compile.matcher(string); // string:后台返的内容,图片就是从中提取的while (matcher.find()){String img = matcher.group();pics.add(img);}return pics;
}
运行,得到结果如下:
可以看出,本文有三张图片
二、再拿到标签中的地址,直接可以使用,代码如下:
List<String> img_url = new ArrayList<>();
/**
* img : 上面打印的标签内容,将它直接提取为我们要的http……
*
* "\"http?(.*?)(\"|>|\\s+)" : 获取src中 "" 图片地址的正则
*/
Matcher m = Pattern.compile("\"http?(.*?)(\"|>|\\s+)").matcher(img);
m.find();
String url = m.group()
img_url.add(url.substring(1, url.length()-1));
运行,得到的结果如下:
可以看出,直接光秃秃的图片地址裸露在脸前,可以直接用了
最后贴出完整代码:
/*** regex:获取<img src="">标签的正则("<img.*?>")* string:提取图片标签的内容* isDistinguish:是否区分大小写*/public static List<String> getMatchString(String regex, String string, boolean isDistinguish){List<String> pics = new ArrayList<>();Pattern compile = null;if (isDistinguish){compile = Pattern.compile(regex);}else{compile = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);}Matcher matcher = compile.matcher(string);while (matcher.find()){String img = matcher.group();
// pics.add(img); // 如果只需要标签,那到这一步就可以了,如果直接需要图片URL,copy代码到最后/*** reg_html_img_src_http: 获取src中 "" 图片地址的正则("\"http?(.*?)(\"|>|\\s+)")* * 获取标签中src的正则表达式("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)")*/Matcher m = Pattern.compile(reg_html_img_src_http).matcher(img);m.find();String group = m.group();pics.add(group.substring(1, group.length() - 1));}return pics;}
java正则表达式提取html中的图片标签img src=相关推荐
- java正则表达式提取字符串中的中文信息
package com.tool; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Patte ...
- java正则表达式提取字符串中的数字
http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java Pattern p = Pattern.co ...
- java 正则表达式 提取ip_java正则表达式提取地址中的ip和端口号
由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...
- 正则表达式提取markdown中图片链接(提取图片链接作为文章首图)
网上搜使用正则表达式提取md中的图片链接作为文章首图 没找到好用的 只好自己写了一个 最大缺点 要自己去除括号 只能获取最后一个的url 以后有空再搞 let url = markdown.repla ...
- java提取word中的图片
一.项目中需要用到word的导入,word 里面的内容由图片,文本,公式等,步骤为:将文档另存为xml格式 1.提取图片,如下是word xml 中的图片标签,具体分析下内容,首先需要获取 w:dra ...
- Java 添加、提取PDF中的图片
Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage().提取PDF中的图片extractImages(),具体操作步骤和Jav ...
- java 正则表达式提取html纯文本
本文来自我的个人博客: java 正则表达式提取html纯文本 做内容的大家都知道,从html中直接提取纯文本是一个非常大的问题.现将我做的正则匹配贴上: import java.util.regex ...
- 01. 利用正则表达式提取文章中的所有英文单词
利用正则表达式提取文章中的所有英文单词 1.先创建一个Pattern对象, 模式对象,可以理解成一个正则表达式对象 Pattern pattern = Pattern.compile("[a ...
- Java正则表达式提取字符的方法实例
正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐.于是想到用正则表达式来完成,对java正则表达式提取字符的方式实例感兴趣的朋友一起学习吧 正好遇到一个 ...
最新文章
- ssl证书是由什么组成?ssl证书是什么?
- linux 用户行为审计update1
- vc 添加打开文件对话框并读取文件
- Python利用pymysql连接Mysql数据库
- 【百战GAN】GAN也可以拿来做图像分割,看起来效果还不错?
- [Android Pro] 通过IMSI判断手机是移动、联通、电信
- Linux 进程后台运行的几种方式 screen
- 2006年2月8日 再见,Borland
- C++笔记(3)——string.h相关的一些小知识
- python wms_webGIS实践:4_2_python django整合geoserver wms服务
- JVM初学之JVM的垃圾回收机制与垃圾回收器
- 随想录(工业软件和消费级软件的区别)
- 2.5.1.2、ImportBeanDefinitionRegistrar 注册BeanDefinition
- 安全随笔1:谨慎一次MD5值的可被穷举性
- linux内核分支,新闻|Linux 内核分支 2.4 版结束生命周期
- android 可拖拽控件,安卓实现任意控件view可拖拽,并监听拖拽和点击事件,可自动拉回屏幕边缘...
- PPT转图片/PDF-实用干货
- LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式
- 《微服务设计》(二)---- 演变式架构师
- html菱形开头做无序,css3 做菱形