正则表达式怎样与才能最大限度地把html正文提取出来,即去掉了广告,格式,图片,只剩下正文...

解决方案 »

  1.   

    public static string StripHTML(string strHtml)
      {
       string [] aryReg ={
              @"<script[^>]*?>.*?</script>",
              @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>",
              @"([\r\n])[\s]+",
              @"&(quot|#34);",
              @"&(amp|#38);",
              @"&(lt|#60);",
              @"&(gt|#62);", 
              @"&(nbsp|#160);", 
              @"&(iexcl|#161);",
              @"&(cent|#162);",
              @"&(pound|#163);",
              @"&(copy|#169);",
              @"&#(\d+);",
              @"-->",
              @"<!--.*\n"
             
             };
       string [] aryRep = {
               "",
               "",
               "",
               "\"",
               "&",
               "<",
               ">",
               " ",
               "\xa1",//chr(161),
               "\xa2",//chr(162),
               "\xa3",//chr(163),
               "\xa9",//chr(169),
               "",
               "\r\n",
               ""
              };
       string newReg =aryReg[0];
       string strOutput=strHtml;
       for(int i = 0;i<aryReg.Length;i++)
       {
        Regex regex = new Regex(aryReg[i],RegexOptions.IgnoreCase );
        strOutput = regex.Replace(strOutput,aryRep[i]);
       }
       strOutput.Replace("<","");
       strOutput.Replace(">","");
       strOutput.Replace("\r\n","");   return strOutput;
      }
      

  2.   

    private String removehtmltag(String htmlstr) throws UnsupportedEncodingException
    {
    htmlstr = htmlstr.replaceAll("\n", "<BR>");
    Pattern pat = Pattern.compile("\\s*<.*?>\\s*", Pattern.DOTALL
    | Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
    Matcher m = pat.matcher(htmlstr);
    String rs = m.replaceAll("   ");
    rs = rs.replaceAll("&nbsp", "   ");
    rs = rs.replaceAll("&lt;", "<");
    rs = rs.replaceAll("&gt;", ">");
    rs = rs.replaceAll(" ", "");
    return rs;
    }