使用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)
曾经了解过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/>)*
- //查找匹配的代码如下:
- String patternStrs="(<\s/a\s+(?:[^\s>]\s/){0,})href\s/=\s/ (\"|'|)([^\2\s>]/)\2((?:\s/[^\s>]){0,}\s /*>)";
- PatternCompiler complier = new Perl5Compiler();
- PatternMatcher matcher = new Perl5Matcher();
- Pattern patternForLink = complier.compile(patternStrs,
- Perl5Compiler.
- CASE_INSENSITIVE_MASK);
- PatternMatcherInput input = new PatternMatcherInput(htmlContent);
- while (matcher.contains(input, patternForLink)) {
- MatchResult match = matcher.getMatch();
- //处理匹配的结果,是要替换还是要其他处理
- }
第二:对其他的标签也类似只要把匹配的字符串改一下为要匹配的标签就可以了。(如IMG标签)
(<\s/img\s+(?:[^\s>]\s/){0,})src\s/=\s/("|'|)([^\2\s>]/)\2((?:\s/[^\s>]){0,}\s/>),*这样就可以处理
总结:对于大量要处理的文本,建议还是用到正则表达式,而要处理的文本比较少时,用普通的字符串API处理函数就足够了。
【编辑推荐】
- Java正则表达式的解释说明
- JAVA正则表达式4种常用的功能
- Java正则表达式之group()
- Java正则表达式入门
- Java正则表达式初学者使用法简介 【责任编辑:red7 TEL:(010)68476606】 原文:使用Java正则表达式匹配、替换HTML内容
上一篇: Java正则表达式工具类实例 下一篇: Java GUI的发展和演化简史
- 相关文章
- ·浅谈Java正则表达式中的Pattern类与Matcher类
- ·Java正则表达式工具类实例
- ·Java正则表达式的解释说明
- ·JAVA正则表达式4种常用的功能
频道热门
- ·半数软件开发商因收购重新审视Java
- ·Google Wave将于九月底面向10万用户公测
- ·MySQL一派添“轻功”Drizzle+PHP抢先体验
- ·Windows 7千人核心开发团队揭秘
- ·Ruby高手点评Scala编程语言十大绝招
查看所有评论()
验证码: (点击刷新验证码) 匿名发表
频道推荐
全站热点
- ·成本速度定成败 四种宽带接入技术大比拼
- ·H3C交换机配置案例:防止同网段ARP攻击
- ·7月第3周要闻回顾:Firefox兵祸连结 微软谷歌..
- ·半数软件开发商因收购重新审视Java
- ·熊猫烧香主犯将出狱 接受专访称想去大网络公司..
技术人
- ·熊猫烧香主犯将出狱 接受专访称想去大网络公司..
- ·魔兽玩家掀起史上最大规模维权 称行政审批应便..
- ·职业教育与学历教育,哪个更重要?
- ·Sun股东批准与甲骨文合并 8月或能完成协议
- ·富士康25岁员工跳楼自杀 据称曾遭公司拘禁殴打
读书
我也能做CTO之程序员职业规划
- 作者:高阳
- 你是否每天例行的上下班很累,感觉自己就像一个木头人被推着走这走那?你是否感觉不满:重复的工作真的很无聊,目前凭我的能力..
- ·Java程序员 上班那点事儿
- ·亮剑.NET. 图解C/#开发实战
- ·Oracle PL/SQL实例精解
- ·把脉VC++
优秀博文
最新热帖
技术快讯
Copyright©2005-2009 51CTO.COM 版权所有