C# 正则表达式提取html中的文本

C# 正则表达式提取html中的文本,第1张

static void Main(string[] args)

{

String s = @"<Body>

<div>这里是要取出的文本A <img src=""/>这里是要取出的文本B <a href="">超链接里的文本不取出 </a>这里是要取出的文本C </div>

<body>"

Regex regex = new Regex( "(/?\\w+)[^>]*>([^<]*)<", RegexOptions.IgnoreCase )

MatchCollection ms = regex.Matches( s )

foreach( Match m in ms )

{

string tagName = m.Groups[1].Value.ToLower()

string text = m.Groups[2].Value.Trim()

if( tagName != "a" &&text.Length >0 )

Console.WriteLine( text )

}

}

结果:

这里是要取出的文本A

这里是要取出的文本B

这里是要取出的文本C

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

    }

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存