2012-07-07 46 views
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源代碼裏面的鏈接,只需使用你做一個這樣的例子

+0

向我們展示了什麼文字看起來像,說你要匹配什麼。 – Keppil 2012-07-07 15:48:19

回答

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; 
} 

其中<tagstart><tagend>是你的開始和結束標籤。 matcher.group(1)爲您提供標籤之間的所有內容,其中matcher.group()matcher.group(0)也會爲您提供標籤。
請注意,如果您的文字包含多個標記對,則使用(.*?)非常重要,否則這將與第一個<tagstart>和最後一個<tagend>相匹配,並返回之間的所有內容。
一個例子用法是:

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

它打印

[beer, juice] 
+0

匹配器(文本)什麼我需要一個stringbuilder裏面,而不是一個正常的文本ID? – CodeGuru 2012-07-07 15:58:48

+0

你想要返回一個'StringBuilder'的列表嗎?或者你想傳遞一個'StringBuilder'作爲參數給'getLinks()'? – Keppil 2012-07-07 16:05:45

+0

我想通過一個stringbuilder來getlinks,但返回一個提取鏈接列表 – CodeGuru 2012-07-07 16:08:13