高分求教,如何编写正则表达式 去掉html标签

hongfarge 2006-10-26 10:51:26
包含css/javascript里面的内容.

<style>
.title0 {font-size:17px;font-family:arial;font-weight:bold;text-decoration:none;color:#FFFFFF;}
A.title2:link {COLOR: #000000; TEXT-DECORATION: none}
A.title2:visited {COLOR: #000000; TEXT-DECORATION: none}
A.title2:active {COLOR: #ff0000; TEXT-DECORATION: none}
A.title2:hover {COLOR: #ff0000; TEXT-DECORATION: none}
</style>

如上,不单单取出<.*?>
...全文
498 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhzzh204553 2006-11-15
  • 打赏
  • 举报
回复
[/<//?/w+(/s+/S+?(=([/'/\"]?).*?[^//]/3)?)*/W*>/]
理解起来很麻烦啊.

下面是我在项目中写的一个方法.
/**
* 过滤掉所有的标签.
*
* @param input 输入字符串.
* @return
*/
public static String omitTag(String input) {
String regex = "<[\\w\\\"\\s\\.:=/_]*>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);

return matcher.replaceAll("");
}

<[\\w\\\"\\s\\.:=/_]*>
表示<...>的东西全部不要,
把可能会出现的字符全部写进方括号.
\\w是\w的转义,\\s是\s的转义等.
\w字母,\\反斜杠,\"双引号,\s空格,等等.
gzdiablo 2006-10-27
  • 打赏
  • 举报
回复
.........java的 不知道这么写行不
gzdiablo 2006-10-27
  • 打赏
  • 举报
回复
<(style|script)[^>]*>(?:\s?|.)*</\1>

表达式在此直接replaceAll即可 把style|script改成其他的标签也可以 但不支持代嵌套的标签

PS:拿分来 呵呵
twenty_three 2006-10-26
  • 打赏
  • 举报
回复
"[/<//?/w+(/s+/S+?(=([/'/\"]?).*?[^//]/3)?)*/W*>/]"
twenty_three 2006-10-26
  • 打赏
  • 举报
回复
/**
* @param args
*/
public static void main(String[] args) {
// <style>
// .title0 {font-size:17px;font-family:arial;font-weight:bold;text-decoration:none;color:#FFFFFF;}
// A.title2:link {COLOR: #000000; TEXT-DECORATION: none}
// A.title2:visited {COLOR: #000000; TEXT-DECORATION: none}
// A.title2:active {COLOR: #ff0000; TEXT-DECORATION: none}
// A.title2:hover {COLOR: #ff0000; TEXT-DECORATION: none}
// </style>
StringBuffer sb = new StringBuffer();
sb.append("<style>");
sb.append(".title0 {font-size:17px;font-family:arial;font-weight:bold;text-decoration:none;color:#FFFFFF;}");
sb.append("A.title2:link {COLOR: #000000; TEXT-DECORATION: none}");
sb.append("A.title2:visited {COLOR: #000000; TEXT-DECORATION: none}");
sb.append("A.title2:active {COLOR: #ff0000; TEXT-DECORATION: none}");
sb.append("A.title2:hover {COLOR: #ff0000; TEXT-DECORATION: none}");
sb.append("</style>");
String str = sb.toString();
System.out.println(str);
String formatStr = str.replaceAll("[/<//?/w+(/s+/S+?(=([/'/\"]?).*?[^//]/3)?)*/W*>/]" , "");
System.out.println(formatStr);
}
hongfarge 2006-10-26
  • 打赏
  • 举报
回复
假如使用<.*?>这个正则表达式的话,不会去掉:

.title0 {font-size:17px;font-family:arial;font-weight:bold;text-decoration:none;color:#FFFFFF;}
A.title2:link {COLOR: #000000; TEXT-DECORATION: none}
A.title2:visited {COLOR: #000000; TEXT-DECORATION: none}
A.title2:active {COLOR: #ff0000; TEXT-DECORATION: none}
A.title2:hover {COLOR: #ff0000; TEXT-DECORATION: none}


zh__ua 2006-10-26
  • 打赏
  • 举报
回复
把需求说清楚啊,如果只是去掉,可以把<.+?>替换成""
低调的小青蛙 2006-10-26
  • 打赏
  • 举报
回复
没必要一步完成吧,

可以先替换
<style[^>]*>.*</style>
=> ""

再进行
<.*?>
=> ""

推荐:
http://www.regexlab.com/

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧