Java如何过滤html代码中的img标签

在做项目的过程中,需要将一段html代码中的img标签中的src属性值批量替换成其他对应的值。
如下一段代码

<!DOCTYPE html>
<html>
    <head>
        <meta charse="utf-8">
        <title>demo</title>
        <style>
            img{
                width: 200px;
            }
        </style>
    </head>
    
    <body>
        ![](http://upload-images.jianshu.io/upload_images/765812-0c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        ![](http://upload-images.jianshu.io/upload_images/765812-0c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        ![](http://upload-images.jianshu.io/upload_images/765812-0c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        ![](http://upload-images.jianshu.io/upload_images/765812-0c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    </body>
</html>

经过处理需要变成如下一段html片段

<!DOCTYPE html>
<html>
    <head>
        <meta charse="utf-8">
        <title>demo</title>
        <style>
            img{
                width: 200px;
            }
        </style>
    </head>
    
    <body>
        ![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822f4354823c07a8addf18667.JPG)
        ![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822f4354823c07a8addf18668.JPG)
        ![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822f4354823c07a8addf18669.JPG)
        ![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822f4354823c07a8addf18670.JPG)
    </body>
</html>

解决这个问题的关键就是一个正则表达式,如下是处理的完整代码

//匹配img标签的正则表达式
String regxpForImgTag = "<img\\s[^>]+/>";
Pattern pattern = Pattern.compile(regxpForImgTag);
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
    String temp = matcher.group();
    String tempUrl = temp.substring(temp.indexOf("src=") + 5);
    tempUrl =tempUrl.substring(0, tempUrl.indexOf("\""));
    String urlResult = "another url";   
    result = result.replace(temp, urlResult);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 为什么不写成都有多美好安逸,多有活力和无法抵抗的魅力呢。不必了,已经有足够多的人为它安静陈述细数那些可爱的性...
    _LYL_阅读 556评论 4 3
  • 本文的大部分内容是对苹果关于APNs官方文档的翻译以及整理。 一、设备token和消息的生命周期 关于设备toke...
    EA88阅读 17,850评论 14 44
  • 我们提了三个问题:有什么是不应该用金钱来买卖的?如果不用金钱来买卖,那又根据什么来分配才公平?如果实施这些分配标准...
    会成长的鱼阅读 247评论 0 1