我想截斷使用例如正則表達式我的網址,如果我有如何截斷使用正則表達式文本在Java中
http://abcdef.defgh/klmno.jsp/abdcefg
我需要閱讀的URL,直到http://abcdef.defgh/klmno.jsp
剩下我需要忽略。
如果我使用
Pattern p = Pattern.compile("href=\".*");
我得到完整的URL好心幫我。
我想截斷使用例如正則表達式我的網址,如果我有如何截斷使用正則表達式文本在Java中
http://abcdef.defgh/klmno.jsp/abdcefg
我需要閱讀的URL,直到http://abcdef.defgh/klmno.jsp
剩下我需要忽略。
如果我使用
Pattern p = Pattern.compile("href=\".*");
我得到完整的URL好心幫我。
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
雖然正則表達式可以肯定你問什麼,這將是更有效地做像這樣:
String url = "http://abcdef.defgh/klmno.jsp/abdcefg";
String desired = url.subString(0, url.lastIndexOf('/'));
如果你想不顧一切在.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
之後的所有內容,直至最終報價[^\"]*\"
。
*您要如何「截斷」您的輸入? '.jsp' *總是*您感興趣的部分的結尾? – 2012-08-02 12:35:56
Tichodroma/hmjd感謝您的回放,實際上我有一個段落,我將有一個網址我需要更改網址,因爲我使用模式中的href來識別url,但是當我說Pattern p = Pattern.compile(「href = \」。*「);它正在閱讀整個段落,我如何避免使用正則表達式模式,謝謝。 – suman 2012-08-02 12:44:07