过滤网页HTML标记

canca canca
2007-06-22 18:46
2
0

JAVA过滤HTML中的所有标记。非常好用!!过滤网页HTML标记 - CAnca - Ant Software Studio

package canca.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HtmlFilter {
 
 private Pattern p;
 private Matcher m;

 public String htmlChanger(String regEx, String htmlTag, String replaceStr) {

  String ret = "";
  try {
   p = Pattern.compile(regEx);// 设置比较模式
   m = p.matcher(htmlTag);
   boolean rs = m.find();
   ret = p.matcher(htmlTag).replaceAll(replaceStr);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return ret;
 }

 public static void main(String[] args) {
 
  String htmlToChange = "<html><head><title>测试</title></head><body><p>中国人</p></body></html>"; //你要转换的HTML标记。
  
  String yourRegEx = "(<\\s*[a-zA-Z][^>]*>)|(</\\s*[a-zA-Z][^>]*>)";  //这个就是对应的去掉HTML标记的正则表达式
  
  String replaceStr = "";  //这个是你要将它替换的字符串,因为你要消去HTML标记,所以这里用空串。
  
  HtmlFliter fliter = new HtmlFliter();
  
  String result = fliter.htmlChanger(yourRegEx, htmlToChange, replaceStr);
  
  System.out.println("---->: " + result);
 }
}

当然如果去掉<style></style>
<script></script>也许有些不好用。
试试下面的正则表达式。
(<\\s*script\\s*>\\s*([a-zA-Z])*\\s*|([\\一-\\龥])*|([^\\x00-\\xff])*</\\s*script\\s*>)

(<\\s*style\\s*>)\\s*([a-zA-Z])*\\s*|([\\一-\\龥])*|([^\\x00-\\xff])*(</\\s*style\\s*>)

发表评论