【Java作业向】正则表达式过滤HTML标签

【Java作业向】正则表达式过滤HTML标签,第1张

过滤HTML标签的Java正则表达式  (?s)<.*?/?.*?>

按照你的要求编写的用正则表达式过滤HTML标签的Java程序如下

public class AA {

public String tagFilter(String s){

String regex = "(?s)<.*?/?.*?>"

String ss=s.replaceAll(regex,"")

return ss

}

public static void main(String[] args) {

String s="<div class=\"guid time online\">测试 abc</div><span data-url=\"games/details/\" class=\"guid done\">你好13548</span><a href=\"games/details/\" class=\"guid\">15个字母Abc</a><i class=\"icon-guid\"/>"

String result=new AA().tagFilter(s)

System.out.println(result)

}

}

//我随便写了一个工具类,getRegexData就是那个方法,你可以根据你的需求稍加改动即可因为我使用的

//URL 而不是HttpClient,所以数据是全部获取过来了,你自己改改吧!不懂再问我

package com.wdy.util

import java.io.IOException

import java.io.InputStream

import java.net.URL

import java.util.ArrayList

import java.util.List

import java.util.regex.Matcher

import java.util.regex.Pattern

/**

 * 工具类

 * @author WDY

 *

 */

public class Tool {

    public static void main(String[] args) {

        System.out.println(getRegexData("<img[ ]*src.*?jpg\"", "<img src=\"img1.jpg\"><img src=\"img2.jpg\""))

        

        

        try {

            URL url=new URL("http://www.baidu.com")

            String stringData=getStringFromInputStream(url.openStream())

            System.out.println(stringData+"----------------------------------------")

            System.out.println()

            

            System.out.println(getRegexData("http://.{6,70}?(png|jpg)", stringData))

        } catch (IOException e) {

            e.printStackTrace()

        }

    }

    /**

     * 给一个正则表达式,和数据,将正则匹配到的数据全数取出来

     * 

     * @param regex

     * @param data

     * @return List<String>

     */

    public static List<String> getRegexData(String regex,String data){

        Pattern pattern=Pattern.compile(regex)

        Matcher matcher=pattern.matcher(data)

        List<String> resultList=new ArrayList<String>()

        int index=0//搜索的位置

        String temp=""

        /* 从指定位置查找,如果找到了,就继续执行下面的代码 */

        while(matcher.find(index)){

            temp=matcher.group()//将匹配到的数据取出来放到集合中去

            resultList.add(temp)

            index+=temp.length()//将查找位置放到此时找到的数据后面

            System.out.println(index)

        }

        return resultList

    }

    /**

     * 将输入流装成字符串

     * @param is

     * @return

     */

    public static String getStringFromInputStream(InputStream is)throws IOException{

        

        StringBuilder sbl=new StringBuilder()

        byte[] buff=new byte[1024*8]

        int len

        int i=0

        while((len=is.read(buff))!=-1){

            sbl.append(new String(buff,0,len,"utf-8"))

            System.out.println(i++)

        }

        System.out.println(sbl.length())

        return sbl.toString()

    }

}

\b{keywords}\b(?=[^<>]*<)

把上面{keywords}替换成你的关键字,注意把{}也替换掉,我是为了让你看明白换哪才加的{}。

然后你找到匹配上面的正则的地方后替换成你想替换的字符串就好了,全部替换记得用全局修饰符


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6098763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存