`

使用Java正则表达式匹配出网页图片地址并替换掉

    博客分类:
  • java
阅读更多

首先说明一下.我是做的邮件发送功能..~~ 图片已经上传到了 服务器, 现在的问题是,发送后的图片不能正常显示,路径不对.. 我是想用Java正则表达式匹配出上传的图片地址并替换掉

 

方法一:

public class TestImg2 {

    private String replaceImgSrc(String content,String replaceHttp){

         String result ="";

//       String patternStr="^.*<img\\s*.*\\s*src=\\\"(.*)\\\"\\s*.*>.*$";

//       String patternStr=".*?<img\\s*.*?\\s*src=\\\"(.*)\\\"\\s*.*?>.*";

//        String patternStr="^.*<img\\s*.*\\s*src=\\\"(.*?)\\\"\\s*.*>.*$";

//       String patternStr="<img(?:.*)src=(\"{1}|\'{1})([^\\[^>]+[gif|jpg|jpeg|bmp|bmp]*)(\"{1}|\'{1})(?:.*)>";

//       String patternStr="<img.*src=(.*?)[^>]*?>src=\"?(.*?)(\"|>|\\s+)";

        

//       String patternStr="(?i)<img[^>]*?src=\"([])\"";

//       String patternStr = "<img\\s+[^>]*?src="((\\w+?:\\/\\/|/)[^"]*?)"[^>]*?>";

 //         String patternStr = "<img\\s+[^>]*?src=\"((\\w+?:?//|\\/|\\w*)[^\"]*?)\"[^>]*?>";

 String patternStr = "<img\\s+[^>]*?src=[\"|\']((\\w+?:?//|\\/|\\w*)[^\"]*?)[\"|\'][^>]*?>";

         Pattern pattern=Pattern.compile(patternStr);

         Matcher matcher = pattern.matcher(content);

          //如果匹配到了img

         System.out.println("matcher.matches() == "+matcher.matches());

         if(matcher.matches()){

           result=content.replaceAll(matcher.group(1),(replaceHttp+matcher.group(1)));

           System.out.println(" result == "+result);

         }else{

             result =content;

         }

         return result;

    }

public static void main(String[] args) {

       TestImg2 ss = new TestImg2();

       String content = "<p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"3\"</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"33\" /></p><p>&nbsp;</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"3\"</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"33\" /></p><p>&nbsp;</p>";

//     String content = "<p><img title=\"33\" alt=\"33\" align=\"left\" src=\"/WorkStation/attached/20110802/20110802173151_741.gif\" width=\"33\" height=\"33\" /></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;<img title=\"32\" alt=\"32\" src=\"/WorkStation/attached/20110802/20110802173215_520.gif\" width=\"33\" height=\"33\" /></p>" ;

       ss.replaceImgSrc(content, "http://10.10.0.126:8088");

    }

}

 

 

 

 

 

方法二

public class TestImg {

    public static void main(String[] args) {

       String content = "<p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"3\"</p>";

//     String content = "<p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"3\"</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"33\" /></p><p>&nbsp;</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"3\"</p><p><img style=\"width:356px;height:163px;\" title=\"33\" alt=\"33\" src=\"/WorkStation/attached/20110802/20110802131500_758.gif\" width=\"33\" height=\"33\" /></p><p>&nbsp;</p>";

//     content = content.replaceAll("(.*)src=\"(.*)", "$1src=\"http://127.0.0.1:8088$2");

       content = content.replaceAll("(.*?)src=\"(.*?)", "$1src=\"http://127.0.0.1:8088$2");

//     String contents = content.replaceAll("(.*?)src=\"(.*?)", "$1src=\""+path+"$2");

 

       System.out.println(content);

      

//     String str = "<img src=\"/WorkStation/attached/20110729/2011072917.jpg\" width=\"333\" height=\"333\" /><img src=\"/WorkStation/attached/20110729/2011072916.jpg\" width=\"333\" height=\"333\" /><img src=\"/WorkStation/attached/20110729/2011072917.jpg\" width=\"333\" height=\"333\" />";

    }

}

 

    // 获取项目的基路径(用于拼接图片的全路径)

private String basePaths(){

       FacesContext context = FacesContext.getCurrentInstance();

       ExternalContext ec = context.getExternalContext();

       HttpServletRequest request = (HttpServletRequest) ec.getRequest();

      

       String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();

       // System.out.println("request.getRequestURL() == "+request.getRequestURL());

       System.out.println("basePath == "+basePath);

       return basePath;

    }

 

分享到:
评论

相关推荐

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    jJAVA正则表达式替换字符

    本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"&lt;title&gt;XXXX&lt;/title&gt;"中的文字XXXX,用正则表达式获取指定...

    Java正则表达式去除img标签的src内容

    java代码,从image标签中正则匹配取出src标签的内容,java代码,从image标签中正则匹配取出src标签的内容

    JAVA 正则表达式 教程

    正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率。 正则表达式应用于程序设计语言中,...

    java正则表达式.docx

    java正则表达式.docx 如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符...

    JAVA正则表达式实例教程.pdf

    JAVA正则表达式实例教程.pdf 1、正则表达式的知识要点 1、正则表达式是什么? 正则表达式是一种可以用于模式匹配和替换的强有力的工具。 2、正则表达式的优点? 更少的代码,更高的效率。 3、正则表达式如何使用? ...

    java正则表达式,十分有用的正则表达式

    大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则...

    学习Java正则表达式(匹配、替换、查找)

    主要介绍了Java正则表达式的匹配、替换、查找和切割等操作,对于正则表达式的匹配、替换大家已经不陌生了吧

    java-正则表达式-正则表达式元素介绍

    正则表达式主要配合以下方法使用 匹配 string.matches() 分割 string.split() 替换 string.replaceAll()

    Java正则表达式详解

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    Java正则表达式_动力节点Java学院整理

    正则表达式是什么?用我的理解就是一个表达式。用来匹配,替换,判断字符串,之前业务就出现过判断返回值是否为邮箱。

    精通正则表达式(第3版)(含awz3 mobi epub)

    本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...

    Java正则表达式的替换和分组功能

    主要给大家介绍了关于Java正则表达式的替换和分组功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java 正则表达式

    正则表达式是一种可以用于模式匹配和替换的强有力的工具。 2、正则表达式的优点? 更少的代码,更高的效率。 3、正则表达式如何使用? 在下面的教程中我们将学习到正则表达式的用法。 4、正则表达式的缺点? 需要花...

    正则表达式匹配,替换,查找

    上篇文章给大家介绍了Java正则表达式匹配,替换,查找,切割的方法,接下来,通过本篇文章给大家介绍js 正则匹配、查找与替换,具体内容请看下文。 js 正则匹配、查找与替换 RegExp对象RegExp对象表示正则表达式,它...

    精通正则表达式~~~

    使用正则表达式匹配文本... 38 向更实用的程序前进... 40 成功匹配的副作用... 40 错综复杂的正则表达式... 43 暂停片刻... 49 使用正则表达式修改文本... 50 例子:公函生成程序... 50 举例:修整股票价格....

    JAVA 正则表达式陈广佳版本(超详细)

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。  可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端...

    正则表达式

    上面的Pattern对象可以重复使用多次,如果某个正则表达式仅需一次使用,可直接使用Pattern类的静态matches方法,此方法自动把指定字符串编译成匿名的Pattern对象,并执行匹配。 Boolean b=Pattern.matches(“a*b”,...

Global site tag (gtag.js) - Google Analytics