1

たとえば、正規表現を使用して URL を切り捨てようとしています。

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

http://abcdef.defgh/klmno.jsp無視する必要があるまで、URLを読む必要があります。

私が使用する場合

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

完全な URL を取得しています。親切に助けてください。

4

3 に答える 3

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
于 2012-08-02T12:45:22.717 に答える
0

正規表現は確かにあなたが求めることを行うことができますが、次のようにする方が効率的です。

String url = "http://abcdef.defgh/klmno.jsp/abdcefg";
String desired = url.subString( 0, url.lastIndexOf( '/' ) );
于 2012-08-02T12:50:56.087 に答える
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それ以降は、最後の見積もりまですべて除外します[^\"]*\"

于 2012-08-02T12:54:01.340 に答える