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元。
}
}
分享到:
评论
使用方法类似:
显然是不行的。
如果我有以下代码
<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代码是<">"的html代码是>
http://www.java1995.cn/group/topic/111
支持,这才是聪明人的做法。jsoup在这个领域基本是最好用的
显然是不行的。
如果我有以下代码
<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
}
这个不是更简单
正解
这个简单点
不知道这个正则在java下会怎么样
html.replaceAll("<[^<>]*?>","")
这个不是更简单
这样就可以了,为什么还需要
这句啊
实现html的解析
实现每个tag的处理机制
实现实体解析
这跟做html的安全显示也是一个道理。
如果小项目, 要求不高, 还是无所谓了。
象搜索引擎里, 提取文本数据那就更复杂了。难度就是抓取文本的主体。 虚拟可视化技术~
如果仅仅只是去除< />之类的标签,我想if 。。。else也能实现,用通配符效率是不是太低了?
http://www.java1995.cn/group/topic/111
还真不知道jsoup,今天先简单看了下,很不错哦,就是不知道有没有人研究过源码...
http://www.java1995.cn/group/topic/111
<[a-zA-Z/]+?>
不过对<script>xxx</script>和<style></style>不好使,所以对于<script>和<style>提前用别的方式处理了