`
joan0106
  • 浏览: 142497 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

java去除html代码

    博客分类:
  • JAVA
阅读更多
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        String content="<p>郎酒15年陈红花郎酒53°500ML,楼兰蛇龙珠戈壁干红(铁盒)750ML,组合
                                  价699元。</p>";
    	Pattern patt=Pattern.compile("<[^>]+>([^<]*)</[^>]+>");
    	Matcher m=patt.matcher(content);
    	while(m.find()){
    		content=content.replaceFirst("<[^>]+>([^<]*)</[^>]+>", m.group(1).toString());
    	}
    	System.out.println(content);
         //郎酒15年陈红花郎酒53°500ML,楼兰蛇龙珠戈壁干红(铁盒)750ML,组合价699元。
	}

}
 
分享到:
评论
22 楼 sunofsummer 2011-02-25  
JE上MM不少啊。:)
21 楼 fishinsky 2011-02-23  
<.*?>
20 楼 cqllang 2011-01-08  
jericho-html.jar 里的au.id.jericho.lib.html.Source有个getTextExtractor方法很好用。以前做对采集下来的网页去掉无用部分只要纯文本时用过:
使用方法类似:
String newstr = new Source(str).getTextExtractor();
19 楼 weiqiang.yang 2011-01-07  
mfkvfn 写道
<([^>]*)>|</([^>]*)>

显然是不行的。
如果我有以下代码
<html>
<head>
<script>

var a=0;
//这是注释
for(var x=0;x<10 && x>5;x++){
//donothing
}
</script>
</head>
<body></body>
</html>


按你们的方式应该输出这样的内容吧?
var a=0;
//这是注释
for(var x=0;x5;x++){
//donothing
}


这么说的话。。。如果html里面有代码
    System.out.println("<div>this is NOT HTML code!</div>");
那没有一个正则表达式能正确解析
可实际上并不是这样,因为"<"的html代码是&lt;">"的html代码是&gt;
18 楼 tedeyang 2011-01-07  
east_java 写道
使用jsoup,一行代码
http://www.java1995.cn/group/topic/111

支持,这才是聪明人的做法。jsoup在这个领域基本是最好用的
17 楼 mfkvfn 2011-01-07  
<([^>]*)>|</([^>]*)>

显然是不行的。
如果我有以下代码
<html>
<head>
<script>

var a=0;
//这是注释
for(var x=0;x<10 && x>5;x++){
//donothing
}
</script>
</head>
<body></body>
</html>


按你们的方式应该输出这样的内容吧?
var a=0;
//这是注释
for(var x=0;x5;x++){
//donothing
}
16 楼 boygirl 2011-01-07  
很多情况还是要考虑的,百度下有很多
15 楼 hebenben 2011-01-07  
wxq136 写道
	public static void main(String[] args) {
			// TODO Auto-generated method stub
	        String content="<p>郎酒15年陈红花郎酒53°500ML,</br>楼兰蛇龙珠戈壁干红(铁盒)750ML,组合价699元。</p>";
	        String regxpForHtml = "<([^>]*)>|</([^>]*)>";
	    	System.out.println(content.replaceAll(regxpForHtml, ""));

这个不是更简单

正解


14 楼 hebenben 2011-01-07  
String.replaceAll("<([^>]*)>","")
这个简单点
13 楼 liusong1111 2011-01-06  
我最近在用jsoup,确时是个好东西,可惜结合scala有问题,编译时报循环引用的错误,大概是scala编译器的bug。退到jsoup1.2.2就好了,缺少的功能只好用implicit conversion手工补了。
12 楼 hama 2011-01-06  
python是这样
re_h=re.compile('</?\w+[^>]*>')
page=re_h.sub('',page)

不知道这个正则在java下会怎么样
11 楼 faylai 2011-01-06  
我给个正则替换成空格就行了

html.replaceAll("<[^<>]*?>","")
10 楼 wxq136 2011-01-06  
	public static void main(String[] args) {
			// TODO Auto-generated method stub
	        String content="<p>郎酒15年陈红花郎酒53°500ML,</br>楼兰蛇龙珠戈壁干红(铁盒)750ML,组合价699元。</p>";
	        String regxpForHtml = "<([^>]*)>|</([^>]*)>";
	    	System.out.println(content.replaceAll(regxpForHtml, ""));

这个不是更简单
9 楼 wxq136 2011-01-06  
有点看不懂
public static void main(String[] args) {
			// TODO Auto-generated method stub
	        String content="<p>郎酒15年陈红花郎酒53°500ML,楼兰蛇龙珠戈壁干红(铁盒)750ML,组合价699元。</p>";
	    	Pattern patt=Pattern.compile("<[^>]+>([^<]*)</[^>]+>");
	    	Matcher m=patt.matcher(content);
                m.find()
	    	System.out.println(m.group(1).toString());
	         //郎酒15年陈红花郎酒53°500ML,楼兰蛇龙珠戈壁干红(铁盒)750ML,组合价699元。
		}

这样就可以了,为什么还需要
while(m.find()){
     content=content.replaceFirst("<[^>]+>([^<]*)</[^>]+>", m.group(1).toString());
}

这句啊
8 楼 sdh5724 2011-01-06  
完整的提取html文本是很复杂的事情, 通常情况下, 要实现按tag提取, 才能做到比较完善。 我曾经实现过一些, 主要用来做数据信息摘要。

实现html的解析
实现每个tag的处理机制
实现实体解析

这跟做html的安全显示也是一个道理。

如果小项目, 要求不高, 还是无所谓了。
象搜索引擎里, 提取文本数据那就更复杂了。难度就是抓取文本的主体。 虚拟可视化技术~




7 楼 ordinary 2011-01-06  
不知道这样截取有什么实际的应用,没有含义的文字,也没本质的价值吧!
如果仅仅只是去除< />之类的标签,我想if 。。。else也能实现,用通配符效率是不是太低了?
6 楼 joan0106 2011-01-06  
east_java 写道
使用jsoup,一行代码
http://www.java1995.cn/group/topic/111


还真不知道jsoup,今天先简单看了下,很不错哦,就是不知道有没有人研究过源码...
5 楼 superobin 2011-01-06  
我关心的是如果遇到异常html会不会混乱。。。比如不关闭标签的html以及自结束的标签
4 楼 east_java 2011-01-05  
使用jsoup,一行代码
http://www.java1995.cn/group/topic/111
3 楼 weiqiang.yang 2011-01-05  
我是直接
<[a-zA-Z/]+?>
不过对<script>xxx</script>和<style></style>不好使,所以对于<script>和<style>提前用别的方式处理了
Global site tag (gtag.js) - Google Analytics