2011-11-29 76 views
1

對不起,如果這之前已被問過,但我無法在網上找到任何答案。我有一個很難逆搞清楚這個正則表達式:創建java正則表達式以獲取href鏈接

「\」 [^>] * \「>」

我想使用的replaceAll替換除了鏈接一切。所以,如果我有一個類似的標籤:

<p><a href="http://www.google.com">Google</a></p>

我需要一個正則表達式,將滿足這樣的:

s.replaceAll(正則表達式, 「」);

給我這個輸出:

http://www.google.com

我知道有更好的方法來做到這一點,但我必須使用正則表達式。任何幫助真的很感激,謝謝!

回答

13

您不必使用replaceAll。更好地利用模式分類如下所示:

Pattern p = Pattern.compile("href=\"(.*?)\""); 
Matcher m = p.matcher(html); 
String url = null; 
if (m.find()) { 
    url = m.group(1); // this variable should contain the link URL 
} 

如果你有幾個鏈接到HTML中循環執行m.find()

+0

謝謝,這是我很難,因爲我已經使用模式/匹配地發現,以.htm和.html結束具體環節實現它。 – user1070866

+0

非常有用!謝謝Alex。 –

+0

這不是刪除像http://example.com的網址 –

0

如果你總是有一個字符串一個這樣的鏈接,試試這個:

"(^[^\"]*\")|(\"[^\"]*)$" 
+0

這工作,但失敗時,href標記有'id ='鏈接之前。我應該在我的問題中加上這個,對不起。 – user1070866

0

你可以檢出http://regexlib.com/您需要的所有正則表達式的幫助。和下面的一個是網址:

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$ 
+0

它是目前編寫的方式,該正則表達式不適用於像winchester.us,amazon.co.uk,amazon.ca等國家代碼的網站。 – spaaarky21

+0

你是絕對正確的。強加我的練習,我犯了一個錯誤。 – kommradHomer

+0

此外,不適用於Java 6.0,至少不在replaceAll方法中。 – user1070866