2012-08-02 99 views
1

我想截斷使用例如正則表達式我的網址,如果我有如何截斷使用正則表達式文本在Java中

http://abcdef.defgh/klmno.jsp/abdcefg 

我需要閱讀的URL,直到http://abcdef.defgh/klmno.jsp剩下我需要忽略。

如果我使用

Pattern p = Pattern.compile("href=\".*"); 

我得到完整的URL好心幫我。

+0

*您要如何「截斷」您的輸入? '.jsp' *總是*您感興趣的部分的結尾? – 2012-08-02 12:35:56

+0

Tichodroma/hmjd感謝您的回放,實際上我有一個段落,我將有一個網址我需要更改網址,因爲我使用模式中的href來識別url,但是當我說Pattern p = Pattern.compile(「href = \」。*「);它正在閱讀整個段落,我如何避免使用正則表達式模式,謝謝。 – suman 2012-08-02 12:44:07

回答

0
String test = "href=\"http://abcdef.defgh/klmno.jsp/abdcefg\"";  
System.out.println(test);  

Matcher mtch = Pattern.compile("href=\"(http://.*\\.jsp).*\"").matcher(test);  
System.out.println(mtch.group(1)); 

會打印出:

href="http://abcdef.defgh/klmno.jsp/abdcefg" 
http://abcdef.defgh/klmno.jsp 
0

雖然正則表達式可以肯定你問什麼,這將是更有效地做像這樣:

String url = "http://abcdef.defgh/klmno.jsp/abdcefg"; 
String desired = url.subString(0, url.lastIndexOf('/')); 
0

如果你想不顧一切在.jsp後,您需要:

String foo = "http://abcdef.defgh/klmno.jsp/abdcefg"; 
String bar = foo.replaceAll("\\.jsp.*", ".jsp"); 

也就是說,採取.jsp(轉義\週期,否則就意味着「任何字符」)和一切.jsp.*)後,用剛剛.jsp取代它。

或者,如果你想只捕獲多數民衆贊成由href=前綴的東西,那麼你可以使用:

String foo = "href=\"http://abcdef.defgh/klmno.jsp/abdcefg\""; 
String bar = foo.replaceAll("(href=.*\\.jsp)[^\"]*\"", "$1"); 

也就是說,捕獲與href=開始,到.jsp一切(貪婪的比賽將確保達最終.jsp),並將其用作背景參考($1)。排除最後.jsp之後的所有內容,直至最終報價[^\"]*\"

相關問題