使用Java正则表达式匹配、替换HTML内容

Posted on

使用Java正则表达式匹配、替换HTML内容

51CTO首页 | 新闻 | 专题 | 论坛 | 博客 | 技术圈 | 读书 | 技术频道| CIO| 存储| 地图 | English

首页 | Java | .Net | Web | XML | 语言工具 | 测试 | 游戏 | 移动 | 架构 | 项目管理 | 全部文章 您所在的位置: 首页 > 开发 > JAVA > JAVA专区 > 基础教程 >

使用Java正则表达式匹配、替换HTML内容

http://developer.51cto.com/ 2009-06-10 13:51 新浪科技 我要评论(0)

  • 摘要:本文向您介绍使用Java正则表达式匹配和替换HTML的内容,作者介绍了两种方法,一种用于替换链接地址,一种用于替换图片。
  • 标签:Java正则表达式 匹配 替换 *

曾经了解过JavaScript的正则表达式,知道其功能的强大,对于处理文本比用普通的API处理不管从效率上还是从功能上都有很大的优势。今天项目要求用到Java的正则表达式,于是在网上Google,找到一个Jakarta ORO的库,听说是Java中功能最强大的正则表达式库,确实也如此,Sun公司的JDK里自带的正则表达式功能是远远不如ORO库,从正则表达式的角度上看,其比普通的API处理文本是复杂很多。

但如果应用得恰当的话,会提高工程的质量,于是项目中就应用了这个ORO库,把浏览器请求得到的HTML页面进行解释替换实现一个代理采集信息的功能。感觉自己好像是在开发软件,不是在设计网页。正则表达式有一个很好用的工具--RegexBuddy,应用这个工具可以调度一个匹配你需要的正则表达式串,经过几番调度,把一些HTML标签的正则表达式匹配出来。

第一:像网页链接之间的内容中[URL[绝对地址替换成相对地址,首先要查找匹配这个链接,查找匹配这个串的正则表达式串为

(<\s/a\s+(?:[^\s>]\s/){0,})href\s/=\s/(\"|'|)([^\2\s>]/)\2((?:\s/[^\s>]){0,}\s/>)*

  1. //查找匹配的代码如下:
  2. String patternStrs="(<\s/a\s+(?:[^\s>]\s/){0,})href\s/=\s/ (\"|'|)([^\2\s>]/)\2((?:\s/[^\s>]){0,}\s /*>)";
  3. PatternCompiler complier = new Perl5Compiler();
  4. PatternMatcher matcher = new Perl5Matcher();
  5. Pattern patternForLink = complier.compile(patternStrs,
  6. Perl5Compiler.
  7. CASE_INSENSITIVE_MASK);
  8. PatternMatcherInput input = new PatternMatcherInput(htmlContent);
  9. while (matcher.contains(input, patternForLink)) {
  10. MatchResult match = matcher.getMatch();
  11. //处理匹配的结果,是要替换还是要其他处理
  12. }

第二:对其他的标签也类似只要把匹配的字符串改一下为要匹配的标签就可以了。(如IMG标签)

(<\s/img\s+(?:[^\s>]\s/){0,})src\s/=\s/("|'|)([^\2\s>]/)\2((?:\s/[^\s>]){0,}\s/>),*这样就可以处理

的标签匹配,对其他的标签也一样.

总结:对于大量要处理的文本,建议还是用到正则表达式,而要处理的文本比较少时,用普通的字符串API处理函数就足够了。

【编辑推荐】

  1. Java正则表达式的解释说明
  2. JAVA正则表达式4种常用的功能
  3. Java正则表达式之group()
  4. Java正则表达式入门
  5. Java正则表达式初学者使用法简介 【责任编辑:red7 TEL:(010)68476606】 原文:使用Java正则表达式匹配、替换HTML内容

上一篇: Java正则表达式工具类实例 下一篇: Java GUI的发展和演化简史

ASP.NET数据库开发手册

51CTO教你做SEO狂人 HTML 5 下一代Web开发标准详解

Scala编程语言 大型网站架构技术专家谈 查看所有评论()

验证码: (点击刷新验证码) 匿名发表

频道推荐

更多>>

刀片服务器 云计算 ARP攻防 思科培训

全站热点

更多>>

ARP攻击防范与解决方案

ARP攻击防范与..

2009年上半年软考最新试题与答案

2009年上半年..

技术人

更多>>

乔布斯病假月底..

魔兽易主,三大..

更多>>

优秀博文

更多>>

最新热帖

更多>>

技术快讯

查看样刊

Copyright©2005-2009 51CTO.COM 版权所有

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途