论坛首页 Java企业应用论坛

java去除html代码

浏览 11065 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (9)
作者 正文
   发表时间:2011-01-05  
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元。
	}

}
 
   发表时间:2011-01-05  
上帝啊。。。如果都是平衡的标签, 如果html有很多换行都没有问题。
0 请登录后投票
   发表时间:2011-01-05  
自结束的标签行不行<div />类型的
0 请登录后投票
   发表时间:2011-01-05  
我是直接
<[a-zA-Z/]+?>
不过对<script>xxx</script>和<style></style>不好使,所以对于<script>和<style>提前用别的方式处理了
0 请登录后投票
   发表时间:2011-01-05  
使用jsoup,一行代码
http://www.java1995.cn/group/topic/111
0 请登录后投票
   发表时间:2011-01-06  
我关心的是如果遇到异常html会不会混乱。。。比如不关闭标签的html以及自结束的标签
0 请登录后投票
   发表时间:2011-01-06  
east_java 写道
使用jsoup,一行代码
http://www.java1995.cn/group/topic/111


还真不知道jsoup,今天先简单看了下,很不错哦,就是不知道有没有人研究过源码...
0 请登录后投票
   发表时间:2011-01-06  
不知道这样截取有什么实际的应用,没有含义的文字,也没本质的价值吧!
如果仅仅只是去除< />之类的标签,我想if 。。。else也能实现,用通配符效率是不是太低了?
0 请登录后投票
   发表时间:2011-01-06  
完整的提取html文本是很复杂的事情, 通常情况下, 要实现按tag提取, 才能做到比较完善。 我曾经实现过一些, 主要用来做数据信息摘要。

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

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

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




0 请登录后投票
   发表时间:2011-01-06   最后修改: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());
}

这句啊
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics