"abs:%s" 正则表达式是什么意思?

What does "abs:%s" regex means?

我在我的项目中使用 Jsoup,我试图了解我 HTMLparser.java 中的这些代码行是如何一步步完成的:

static List<LinkNode> toLinkNodeObject(LinkNode parentLink, Elements tagElements, String tag) {
    List<LinkNode> links = new LinkedList<>();
    for (Element element : tagElements) {
        if(isFragmentRef(element)){
            continue;
        }

        String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");
        String url = element.attr(absoluteRef);

        if(url!=null && url.trim().length()>0) {
            LinkNode link = new LinkNode(url);
            link.setTag(element.tagName());
            link.setParentLink(parentLink);
            links.add(link);
        }
    }
    return links;
}

你能告诉我这行中的 "abs:%s" 正则表达式在做什么吗?

 String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");

假设标签具有以下值:

tag = "blah, blah, [medo0070";

然后是有问题的行

String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href")

将分配

abs:medo0070

到 absoluteRef 因为标记变量包含“[”字符。如果标签具有值

tag = "blah, blah, medo0070";

那么 absoluteRef 将被赋予值

abs:href

因为标签变量不包含'['字符。

三元运算符(参见此处:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html)的工作方式如下:

a ? b : c;

等同于

if (a) {
    b;
}
else {
    c;
}

在您的示例中,a 是 tag.contains("["),b 是 tag.substring(tag.indexOf ("") + 1, tag.length()) 并且 c 是 "href".