`

java 正则表达式过滤html元素

 
阅读更多

转自:http://pmh905001.iteye.com/blog/239900

/**
      * filter all html element. 
      * For example:<a href="www.sohu.com/test">hello!</a>
      * The filter result is :hello!
      * Notice:This method filter the text between "<" and ">"
      * @param element
      * @return
      */
     public static String getTxtWithoutHTMLElement (String element)
     {
//       String reg="<[^<|^>]+>";
//       return   element.replaceAll(reg,"");
        
         if(null==element||"".equals(element.trim()))
         {
             return element;
         }

         Pattern pattern=Pattern.compile("<[^<|^>]*>");
         Matcher matcher=pattern.matcher(element);
         StringBuffer txt=new StringBuffer();
         while(matcher.find())
         {
             String group=matcher.group();
             if(group.matches("<[\\s]*>"))
             {
                 matcher.appendReplacement(txt,group);    
             }
             else
             {
                 matcher.appendReplacement(txt,"");
             }
         }
         matcher.appendTail(txt);
         repaceEntities(txt,"&amp;","&");
         repaceEntities(txt,"&lt;","<");        
         repaceEntities(txt,"&gt;",">");
         repaceEntities(txt,"&quot;","\"");
         repaceEntities(txt,"&nbsp;","");        
         return txt.toString();
     }
private static void repaceEntities ( StringBuffer txt,String entity,String replace)
     {
         int pos=-1;
         while(-1!=(pos=txt.indexOf(entity)))
         {
             txt.replace(pos,pos+entity.length(),replace);
         }
     }

 

下面是测试用例:
public void testGetTxtWithoutHTMLElement ()
     {
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<a href='a/test'>test</a>"));
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<a href='a/test'>test"));
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<input type='text'>test</input>"));
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<p>test"));
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<table><tr><td>test</td></tr></table>"));
        
         assertEquals("te<st",ExcelHssfView.getTxtWithoutHTMLElement("<p>te<st"));
        
         assertEquals("te>st",ExcelHssfView.getTxtWithoutHTMLElement("<p>te>st"));
        
         assertEquals("tst",ExcelHssfView.getTxtWithoutHTMLElement("<p>t<e>st"));
        
         assertEquals("t<st",ExcelHssfView.getTxtWithoutHTMLElement("<p>t<<e>st"));
        
         assertEquals("<>test",ExcelHssfView.getTxtWithoutHTMLElement("<p><>test"));
        
         assertEquals("< >test",ExcelHssfView.getTxtWithoutHTMLElement("<p>< >test"));
        
         assertEquals("<<>test",ExcelHssfView.getTxtWithoutHTMLElement("<p><<>test"));
        
         assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<table><tr><td> test</td></tr></table>"));
        
     }

分享到:
评论

相关推荐

    正则表达式百度版

    例如,Python中的`re`模块、Java中的`java.util.regex`包、JavaScript中的`RegExp`对象等,都提供了丰富的正则表达式功能,使得开发者能够轻松地进行字符串操作。 #### 应用实例 正则表达式的应用十分广泛,以下是...

    日常中最常用的正则表达式代码

    这些正则表达式都是日常编程中常用的基础模式,它们在数据验证、搜索、过滤等任务中发挥着关键作用。理解并掌握这些表达式,对于提高开发效率和代码质量至关重要。在实际应用中,根据具体需求,可能需要对这些基础...

    正则表达式总结文档集合

    Java提供了`java.util.regex`包来支持正则表达式的使用。常用的类包括`Pattern`和`Matcher`。 ##### 9.4 DELPHI中的正则表达式 在Delphi中,可以使用`TRegEx`类来处理正则表达式相关的任务。 ### 结论 正则...

    正则表达式详细教程加测试工具

    在Linux、Unix或Windows的命令行中,正则表达式常用于文件查找、内容过滤等任务,这个专题可能详细讲解了相关命令和技巧。 《正则表达式30分钟入门教程.htm》与前面的入门教程相似,可能是HTML格式的版本,方便在线...

    jsp学习详细资料(含有正则表达式)

    4. **数据过滤**:在读取或写入数据库之前,可以用正则表达式对数据进行清洗和格式化。 5. **模板引擎**:一些模板引擎如FreeMarker或Velocity,它们的配置或模板语法中也支持正则表达式,用于动态内容的处理。 这...

    JavaScript 正则表达式 ajax

    本课程重点涵盖了JavaScript的几个关键知识点:正则表达式、AJAX(异步JavaScript和XML)以及相关的编程基础。 正则表达式是JavaScript中用于模式匹配和文本操作的强大工具。它允许程序员通过定义特定的模式来搜索...

    javaweb新浪微博邮箱登录界面,图书周排行榜界面,正则表达式验证用户注册页面前端代码资源包

    我们将深入探讨每个方面,同时引入正则表达式在验证用户输入中的应用。 首先,让我们看看"新浪微博邮箱登录界面"。这个界面通常会包含用户名(可以是手机号或邮箱)输入框、密码输入框、登录按钮,以及可能的记住...

    程序员必备API大全(CHM格式)jquery+jstl+servlet+js+css+正则表达式

    《程序员必备API大全》是一个集合了多种Web开发技术API的资源包,主要涵盖了jQuery、JSTL、Servlet、JavaScript、CSS以及正则表达式等关键领域。这些技术是构建高效、响应式的Web应用程序的基础,对于程序员来说是不...

    Java程序员超好用的regex匹配工具

    对于Java程序员来说,掌握正则表达式是提高工作效率的重要技能。本文将深入探讨Java程序员如何利用好regex匹配工具,特别是针对描述中提到的“Java程序员超好用的regex匹配工具”。 首先,我们要理解正则表达式的...

    JSP中正则表达式用法实例

    JSP(JavaServer Pages)是一种动态网页技术标准,可以让开发者将Java代码嵌入...然而,需要注意的是,在使用正则表达式时,应当避免正则表达式的注入漏洞,确保对用户输入进行适当的验证和过滤,防止潜在的安全风险。

    Java过滤器,字符过滤,标签过滤

    这通常涉及到正则表达式和字符串操作,例如去除特殊字符,限制输入长度,或确保输入符合特定格式。使用`List`作为过滤字符库是一种常见的方法,将需要过滤的字符存储在列表中,然后在处理请求时检查每个字符是否在...

    过滤HTML元素字符

    本文将深入探讨如何过滤HTML元素字符,以及在Java中实现这一功能的方法。 首先,理解HTML过滤的必要性至关重要。用户输入的数据可能会包含恶意的HTML标签或属性,如`&lt;script&gt;`、`&lt;iframe&gt;`等,这些内容如果未经处理...

    解析网页利器组合(正则、jsoup、beanshell、dozer)资源

    综合以上工具,我们可以构建一个高效的网页解析流程:首先使用正则表达式进行初步的文本匹配,然后利用Jsoup解析HTML并提取目标元素,接着借助BeanShell进行复杂逻辑判断和数据处理,最后通过Dozer将处理后的数据...

    java和javascript中过滤掉img形式的字符串不显示图片的方法

    Java中使用正则表达式过滤字符串 在Java中,使用String类的replaceAll方法来实现基于正则表达式的字符串替换。在上述Java代码示例中,使用了正则表达式`"*&gt;.*&lt;/img&gt;"`和`"*/&gt;"`分别匹配两种形式的`&lt;img&gt;`标签,并...

    从 HTML 文档中提取 TEXT 文件(6KB)...

    在IT领域,提取文本文件(如TEXT)是从HTML文档中获取有用...这个过程可能包括解析HTML,使用正则表达式过滤非文本内容,以及通过用户界面进行交互。同时,通过日志文件监控程序运行情况,并提供了必要的文档以供参考。

    [其他类别]网页中文本框自校验的标签_input(毕设 + 课设).zip

    总的来说,这个项目涉及到了前端的HTML、JavaScript以及后端的Java(JSP和Servlet)技术,通过自定义标签和正则表达式实现了文本框的自校验功能,提高了用户输入数据的质量,减少了无效请求对服务器的影响。...

    HTMLParser提取网页内容

    HTMLParser 是一个用于解析HTML文档的Java库,它允许开发者以结构化的方式处理网页内容,例如提取特定元素、过滤不需要的标签等。在Web抓取或数据挖掘领域,HTMLParser是一个常用的工具,可以帮助我们从HTML源码中...

    学习java需要的一些中文帮助文档

    11. **正则表达式**:这是一种强大的文本处理工具,用于匹配、查找、替换和验证字符串模式。掌握正则表达式语法和常见用法,对处理字符串数据大有裨益。 这个压缩包中的帮助文档将涵盖以上各个主题,通过深入学习和...

    基于jsp的非法关键字过滤功能

    正则表达式在Java中通过`Pattern`和`Matcher`类来使用。 5. **用户输入验证**:在JSP中,通常会通过HTTP请求接收用户输入。我们需要在服务器端对这些输入进行验证,防止恶意用户绕过前端验证,直接提交非法内容。 ...

Global site tag (gtag.js) - Google Analytics