java正则表达式替换html中除标签外的关键字内容

html-css07

java正则表达式替换html中除标签外的关键字内容,第1张

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

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

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

您好,您这样:提取链接的标签文本和url地址

将Html文件代码传入string参数s,代码如下:

private void Reg_A_Href(string s)

{

string str = s

Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>(?<text>.*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline)

MatchCollection mc = re.Matches(str)

Console.WriteLine(mc.Count)

foreach (Match m in mc)

{

info_Add("[href] " + m.Groups["href"].Value)

info_Add("[text] " + m.Groups["text"].Value)

Console.WriteLine("{0}:{1}", m.Groups["href"].Value, m.Groups["text"].Value)

}

}

//我随便写了一个工具类,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()

    }

}