六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 115|回复: 0

匹配HTML中的DIV

[复制链接]

升级  2%

13

主题

13

主题

13

主题

秀才

Rank: 2

积分
53
 楼主| 发表于 2013-2-7 19:20:12 | 显示全部楼层 |阅读模式
public static String getContentByRegex2(String webContent, String screenRegex, String tag)
    {
        Pattern aPattern = Pattern.compile(screenRegex, 2);
        Matcher aMat = aPattern.matcher(webContent);
        String result = null;
        if (!aMat.find())
        {
            return result;
        }
        result = aMat.group(1);
        int index = 0;
        int totalStartTag = 0;
        int totalEndTag = 0;
        int flag = 0;
        String regexStart = "(<" + tag + ">)|(<" + tag + "\\s+[^<>/]*>)";
        String regexSEnd = "</" + tag + ">";
        String regexTag = "(<" + tag + ">)|(<" + tag + "\\s+[^<>/]*>)|(</" + tag + ">)";
        result = result + regexSEnd;
        Pattern aPatternStartTag = Pattern.compile(regexStart, 2);
        Matcher aMatStartTag = aPatternStartTag.matcher(result);
        if (aMatStartTag.find())
        {
            if (aMatStartTag.start() > (index = result.indexOf(regexSEnd)))
            {
                return result.substring(0, index);
            }
            Pattern aPatternTag = Pattern.compile(regexTag, 2);
            Matcher aMatTag = aPatternTag.matcher(result);
            while (aMatTag.find())
            {
                String str = aMatTag.group();
                if (str.matches(regexSEnd))
                {
                    totalEndTag++;
                }
                else
                {
                    totalStartTag++;
                }
                if (totalEndTag == totalStartTag)
                {
                    flag = 1;
                    continue;
                }
                if (flag == 1 && str.matches(regexSEnd))
                {
                    index = aMatTag.start();
                    result = result.substring(0, index);
                    break;
                }
                else
                {
                    flag = 0;
                    continue;
                }
            }
        }
        else
        {
            if ((index = result.indexOf(regexSEnd)) != -1)
            {
                result = result.substring(0, index);
            }
        }
        return result;
    }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表