2011-09-02 228 views
1

我有一個網址列表,我想匹配的URL使用正則表達式匹配兩個URL正則表達式

http://investor.somehost.com/*

這裏*表示以後什麼或者你可以說這是一個通配符這個網址.. 。

String href = url.getURL(); 

這裏href包含了所有的url。

了firstEntry假設包含了上述網址(http://investor.somehost.com/*

所以,我怎麼能比較HREF了firstEntry與這樣,如果以這樣的URL HREF然後開始做這件事情......

+0

如果您對正則表達式感興趣,您可以*查找*'^ http:// investor \ .somehost \ .com'或* match *'http:// investor \ .somehost \ .com (/.*)?'。 – Peteris

回答

6

如果你只是想確定字符串是否以特定前綴開頭,請使用startsWith(String prefix)

實施例:

String href = "http://google.com/mail"; 
if(href.startsWith("http://google.com")) { 
    //... Do stuff 
} 
+1

是的,我可以做到這一點......但是,在URL之後,它意味着什麼......因此,任何事情都可以在「investor.somehost.com/(任何東西)」之後出現。所以如果我使用startswith它也會檢查*正確。但我想要一些可以匹配這個*的正則表達式...我必須將文本文件中的URL與URL列表進行比較...... – ferhan

+1

請參閱我的代碼示例。每次您的前綴將更改爲包含相關的網址。我們只在前綴中包含我們感興趣匹配的字符串部分,並放下'*'部分。 –

1
"^http://investor\\.somehost\\.com/" 

將匹配開始http://investor.somehost.com/任何字符串。如果你想唯一有效的網址,你可以使用

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?" 

如果你想允許查詢,

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?(\?([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?" 

如果您還需要片段,

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?(\?([-._~:@!$&'()*+,;=/?a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?(#([-._~:@!$&'()*+,;=/?a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?" 

結束所有這些與$如果您不想允許字符串的尾隨(非URL)部分。

0

我在this post上有一個正則表達式,它提供了正則表達式來提取url no matyer的域部分,它在它出現的字符串中出現。它的JavaScript,所以刪除前導'/'amd尾隨'/ ig'。使用它來提取域並將它們與簡單的equals檢查進行比較。