2014-01-27 64 views
0

我試圖提取文本文件中的部分URL。使用java正則表達式提取URL的一部分

例如:

/p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed" class="search_bin"><span>Closed Tickets</span></a> 

我想只提取

/p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed 

我怎麼能做到這一點使用正則表達式。我用正則表達式

"/p/*./bugs/*." 

但它沒有工作。那麼 「/錯誤」,

+0

嘗試此」^。* \「\\ s」 –

+1

這看起來像HTML。如果你爲了好玩而做了這些,但是如果你想要某種穩定性,那麼我建議你使用HTML解析器。 Jsoup就是這樣一個庫。 – nhahtdh

回答

0

試試這個:

"\/p.*\/bugs[^"]*" 

它的意思是: 「/ P」

則:所有字符,

那麼所有字符除"

0

您可以使用:

(\/p\/.*\/bugs\/.*?(?=")) 

Java代碼:

 String REGEX = "(\\/p\\/.*\\/bugs\\/.*?(?=\"))"; 
     Pattern p = Pattern.compile(REGEX); 
     Matcher m = p.matcher(line); 
     while (m.find()) { 
       String matched = m.group(); 
       System.out.println("Mached : "+ matched); 

      } 

輸出

Mached : /p/gnomecatalog/bugs/search/?q=status%3Aclosed-accepted+or+status%3Awont-fix+or+status%3Aclosed 

DEMO

說明: enter image description here

+0

謝謝!這是幫助 – Tech

+0

@SultanAlQahtani:它工作嗎? –

+0

是的,非常感謝你 – Tech

0

這裏的另一種方式:(我)

(?i)/p/[a-z/]+bugs/[^ "]+ 

中開始使正則表達式不區分大小寫的,所以你不必擔心。然後在錯誤/它將繼續,直到它到達一個空間或「