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

开发 后端
本文向您介绍使用Java正则表达式匹配和替换HTML的内容,作者介绍了两种方法,一种用于替换链接地址,一种用于替换图片。

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

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


***:像网页链接<a .......... href="[url1]" .......>之间的内容中[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.  
  6.     Pattern patternForLink = complier.compile(patternStrs,  
  7.                                               Perl5Compiler.  
  8.                                               CASE_INSENSITIVE_MASK);  
  9.     PatternMatcherInput input = new PatternMatcherInput(htmlContent);  
  10.     while (matcher.contains(input, patternForLink)) {  
  11.       MatchResult match = matcher.getMatch();  
  12.       //处理匹配的结果,是要替换还是要其他处理  
  13.     }  
  14.  

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

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

<img.....................src="[url]"...............>的标签匹配,对其他的标签也一样.

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

 

【编辑推荐】

  1. Java正则表达式的解释说明
  2. JAVA正则表达式4种常用的功能
  3. Java正则表达式之group()
  4. Java正则表达式入门
  5. Java正则表达式初学者使用法简介
责任编辑:佚名 来源: 新浪科技
相关推荐

2009-09-16 16:22:04

正则表达式匹配

2023-10-07 08:25:09

Java处理工具正则表达式

2010-07-14 09:01:18

Perl正则表达式

2012-01-12 10:21:57

正则表达式

2009-09-16 14:32:43

PHP正则表达式替换

2009-09-16 18:08:14

正则表达式匹配单词

2016-11-10 16:21:22

Java 正则表达式

2009-02-18 09:48:20

正则表达式Java教程

2010-03-25 18:25:36

Python正则表达式

2010-03-15 16:21:28

Python正则表达式

2010-03-04 15:20:20

Ubuntu Patt

2009-09-16 17:29:30

正则表达式使用详解

2009-09-16 13:24:30

PHP正则表达式匹配

2009-09-16 16:48:03

正则表达式匹配数字

2021-12-03 08:50:25

LeetCode正则表达式算法

2018-09-27 15:25:08

正则表达式前端

2020-09-04 09:16:04

Python正则表达式虚拟机

2009-06-08 16:49:05

Java正则表达式group

2011-07-11 12:33:30

JAVA

2009-08-14 17:44:46

C#中使用正则表达式匹
点赞
收藏

51CTO技术栈公众号