たとえば、正規表現を使用して URL を切り捨てようとしています。
http://abcdef.defgh/klmno.jsp/abdcefg
http://abcdef.defgh/klmno.jsp
無視する必要があるまで、URLを読む必要があります。
私が使用する場合
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
それ以降は、最後の見積もりまですべて除外します[^\"]*\"
。