0

大家好,我正在尝试检索这两个标签之间的链接,例如此处的文本,然后它将其存储在列表中,我如何使用模式和匹配器检索这些文本

public void getlinks() {
    Pattern Start = Pattern.compile(this.PatternStart);  //<Link>
    Pattern End = Pattern.compile(this.PatternEnd);      //</Link>
    Matcher mStart = Start.matcher(this.Source); // matches Start
    Matcher mEnd = End.matcher(this.Source); // matches end

   ????????????
}

试图找到一个 html 源代码之间和内部的链接,仅用作示例

4

1 回答 1

2

一般来说,你这样做:

public static List<String> getLinks(String text) {
    Matcher matcher = Pattern.compile("<tagstart>(.*?)<tagend>").matcher(text);
    List<String> linkList = new ArrayList<String>();
    while (matcher.find()) {
        linkList.add(matcher.group(1));
    }
    return linkList;
}

where<tagstart><tagend>是你的开始和结束标签。matcher.group(1)为您提供标签之间的所有内容,在哪里或matcher.group()也会matcher.group(0)给您标签。
请注意,(.*?)如果您有一个包含多个标签对的文本,则使用它很重要,否则这将匹配第一个<tagstart>和最后一个<tagend>并返回其间的所有内容。
一个示例用法是:

    System.out.println(getLinks("<tagstart>beer<tagend><tagstart>juice<tagend>"));

哪个打印

[beer, juice]
于 2012-07-07T15:56:02.347 回答