`

使用正则替换img标签的src属性

阅读更多

需求:由于系统切换,要求将存在数据库中的网页内容中的img标签的src属性进行修补,举例:

content="<p><img title=\"122444234\" src=\"/files/post/122444234.jpg\"/><p>其他字符";

要求替换后为:

content="<p><img title=\"122444234\" src=\"http://xxx.xxx.com/files/post/122444234_500.jpg\" /><p>其他字符";

 

 

使用正则即可解决,代码如下(ApiUtil.java静态方法)

/**
	 * 将img标签中的src进行二次包装
	 * @param content 内容
	 * @param replaceHttp 需要在src中加入的域名
	 * @param size 需要在src中将文件名加上_size
	 * @return
	 */
	public static String repairContent(String content,String replaceHttp,int size){
		String patternStr="<img\\s*([^>]*)\\s*src=\\\"(.*?)\\\"\\s*([^>]*)>";
		Pattern pattern = Pattern.compile(patternStr,Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(content);
		String result = content;
		while(matcher.find()) {
			String src = matcher.group(2);
			logger.debug("pattern string:"+src);
			String replaceSrc = "";
			if(src.lastIndexOf(".")>0){
				replaceSrc = src.substring(0,src.lastIndexOf("."))+"_"+size+src.substring(src.lastIndexOf("."));
			}
			if(!src.startsWith("http://")&&!src.startsWith("https://")){
				replaceSrc = replaceHttp + replaceSrc;
			}
			result = result.replaceAll(src,replaceSrc);
		} 
		logger.debug(" content == " +content);
		logger.debug(" result == " + result);
		return result;
	}

 测试代码:

public static void main(String[] args) {
		String content = "<p><img  title=\"10010001\" src=\"/files/post/10010001.gif\" width=\"200\" height=\"300\" />" +
				"</p><p><img  title=\"10010002\" src=\"/files/post/10010002.gif\" width=\"500\" height=\"300\" /><p>&nbsp;</p>"+
				"</p><p><img  title=\"10010003\" src=\"/files/post/10010003.gif\" width=\"600\" height=\"300\" /><p>&nbsp;</p>";
		String replaceHttp = "http://www.baidu.com";
		int size = 500;
		String result = ApiUtil.repairContent(content, replaceHttp, size);
		System.out.println(result);
	}

 

关键在于正则表达式:<img\\s*([^>]*)\\s*src=\\\"(.*?)\\\"\\s*([^>]*)>

特别是 ([^>]*) 不能用.*代替,否则只会从<img匹配到字符串最后一个">"符号为止,如果每个src的内容不一样,就只会替换最后一个src

 

参考:http://hi.baidu.com/yanghuichi520/item/69e12ede3f7c8a1ee0f46fab

原文地址:http://it.5yun.com.cn/html/y2015/m03/112.html

分享到:
评论

相关推荐

    java正则替换img标签中src值的方法

    Java 正则替换 img 标签中 src 值的方法 正则表达式是 Java 中非常重要的一种技术,广泛应用于字符串处理、数据提取、格式验证等领域。在 HTML 处理中,正则替换 img 标签中 src 值的方法尤其重要,本文就将介绍一...

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

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

    匹配img标签_匹配src中的值

    使用这个正则表达式,我们可以用编程语言如JavaScript、Python等进行匹配操作,找出所有`&lt;img&gt;`标签的`src`值。例如,在JavaScript中,可以使用`match()`函数: ```javascript const html = "HTML文本"; const ...

    JavaScript正则表达式替换字符串中图片地址(img src)的方法

    针对替换img标签src属性的问题,我们可以创建一个正则表达式来匹配img标签及其src属性。以下是一个示例: ```javascript const content = '&lt;img src="//...

    php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)

    在这个场景下,我们讨论的是如何使用正则表达式来处理HTML中的`img`标签,特别是提取或修改其属性,如`src`、`width`和`height`等。 首先,我们关注的是如何提取`img`标签中的属性。例如,如果我们有一个包含HTML...

    用正则表达式替换图片地址img标签

    本篇文章将深入讲解如何使用正则表达式来替换HTML字符串中的img标签的src值。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式匹配语言,用于在文本中查找、替换或提取符合...

    PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例

    在本文中,我们将深入探讨如何使用PHP通过正则表达式批量替换HTML中的`&lt;img&gt;`标签的`src`属性,从而实现获取缩略图的功能。这个功能对于网站内容的优化和资源管理非常重要,特别是当需要统一处理大量图片时。 首先...

    正则获取html中的 <img src = 图片地址

    要提取`&lt;img&gt;`标签的`src`属性,我们需要构造一个能匹配该模式的正则表达式。一个简单的正则表达式可能如下: ```regex &lt;img\s+src=["']?([^"']+)["']? ``` 这个正则表达式的解释如下: - `&lt;img&gt;`:匹配`&lt;img`这个...

    解析PHP正则提取或替换img标记属性

    本篇文章将对使用PHP进行正则表达式提取或替换img标记中的属性进行详细解析。 首先,要使用正则表达式提取或替换属性,我们需要理解正则表达式的相关语法规则。在PHP中,可以通过preg_match函数实现正则表达式的...

    PHP 正则获取IMG各属性值

    在本主题“PHP 正则获取IMG各属性值”中,我们将深入探讨如何利用PHP的正则表达式功能来解析HTML代码,特别是针对`&lt;img&gt;`标签,提取其各个属性的值,如`src`、`alt`、`width`和`height`等。 首先,我们需要理解HTML...

    php正则删除img标签的方法示例 <font color=red>原创</font>

    src\s*=\s*`,`src`属性的匹配,以及`img`标签的结束`&gt;`。这里使用了两个反斜杠`\\`来转义双引号`"`,因为双引号在正则表达式中有特殊含义。 5. 使用在线正则表达式工具:本例中还提到了两个在线工具,一个用于测试...

    java正则表达式过滤html标签

    regxpForImaTagSrcAttrib是一个正则表达式,用于匹配IMG标签的SRC属性。 HtmlRegexpUtil类提供了多种方法来过滤html标签,包括过滤所有以"开头以"&gt;"结尾的标签、找出IMG标签、找出IMG标签的SRC属性等。这些方法...

    Java正则表达式过滤html标签1[参考].pdf

    本文将介绍如何使用Java正则表达式来过滤HTML标签,包括过滤所有以“&lt;”开头以“&gt;”结尾的标签、提取IMG标签的SRC属性等。 过滤所有以“&lt;”开头以“&gt;”结尾的标签 在HtmlRegexpUtil类中,我们定义了一个静态变量...

    java代码-正则去除HTML代码中的IMG标签

    // 使用replaceAll函数替换所有匹配的&lt;img&gt;标签为"" return matcher.replaceAll(""); } ``` 在上述代码中,`&lt;img\\s+[^&gt;]*&gt;`是正则表达式,用于匹配任何形式的IMG标签。`\\s+`匹配一个或多个空格,`[^&gt;]*`匹配除`...

    EditPlus 正则替换图片ubb替换成img

    ### EditPlus正则替换:将图片UBB格式转换为HTML img标签 在互联网技术领域,尤其是在网站开发与维护过程中,经常需要对大量的文本内容进行格式调整或转换。其中一种常见的需求就是将论坛或博客系统中使用的UBB...

    php正则表达式匹配img中任意属性的方法

    - 提取src属性使用的正则表达式是`/&lt;img.+src=\"?(.+\.(jpg|gif|bmp|png))\"?.+&gt;/i`。 在这个表达式中,`src=\"?` 匹配src属性的开始和可选的引号,`(.+\.(jpg|gif|bmp|png))` 捕获文件名和扩展名,最后`.+` 匹配...

    php正则替换处理HTML页面的方法

    PHP正则替换处理HTML页面的方法主要涉及到在PHP中使用正则表达式对HTML文档内容进行查找和替换操作,以达到修改页面元素属性的目的。HTML页面是由各种标签组成的,这些标签在正则表达式中需要特别处理,因为标签的...

    java使用正则表达式过滤html标签

    例如,`regxpForHtml`用于匹配任何以小于号`开头且以大于号`&gt;`结尾的HTML标签,`regxpForImgTag`用于匹配`&lt;img&gt;`标签,并且可以提取其中的属性,`regxpForImaTagSrcAttrib`则是用于提取`&lt;img&gt;`标签的`src`属性。...

Global site tag (gtag.js) - Google Analytics