2
回答
page.getHtml().regex()正则问题
华为云实践训练营,热门技术免费实践!>>>   

@黄亿华 你好,想跟你请教个问题:

我使用的零宽断言正则:(?<=xxx:").*?js,如匹配:xxx:"https://abc.com/a.js"

在RegexSelector 31处,对regexStr进行处理:

if (StringUtils.countMatches(regexStr, "(") - StringUtils.countMatches(regexStr, "\\(") ==
                StringUtils.countMatches(regexStr, "(?:") - StringUtils.countMatches(regexStr, "\\(?:")) {
33号            regexStr = "(" + regexStr + ")";

因为代码判断中没有对“(?<=”进行判断,所以(?<=xxx:").*?js没有添加分组(我正则小白,33行加()应该是添加分组吧?:)),而RegexSelector->group的值始终是1(private int group = 1;),所以我的正则运行时就会出现数据越界。

错误出现在:RegexResult->get 28行。

public String get(int groupId) {
        if (groups == null) {
            return null;
        }
28行        return groups[groupId];
    }

举报
m4wayne
发帖于3年前 2回/290阅
顶部