3

正規表現を使用して URL の最後の部分を取得するにはどうすればよいですか。これが私の URL です。最後のスラッシュと # の間のセグメントが必要です。

http://mycompany.com/test/id/1234#this

だから私は取得したいだけです1234

私は次のものを持っていますが、「#this」を削除していません

".*/(.*)(#|$)",

データのインデックス作成中にこれが必要なので、URL クラスを使用したくありません。

4

2 に答える 2

5

使用するだけURIです:

final URI uri = URI.create(yourInput);
final String path = uri.getPath();
path.substring(path.lastIndexOf('/') + 1); // will return what you want

クエリ文字列などを含む URI も処理します。いずれにせよ、URL (URI) から任意の部分を抽出する必要がある場合、正規表現を使用することは望ましくありませんURI。低コスト -- 専用のパーサーがあるため。

さらに Guava を使用してOptional、URI にパス コンポーネントがない場合を検出するデモ コード:

public static void main(final String... args) {
    final String url = "http://mycompany.com/test/id/1234#this";
    final URI uri = URI.create(url);
    final String path = Optional.fromNullable(uri.getPath()).or("/");
    System.out.println(path.substring(path.lastIndexOf('/') + 1));
}
于 2013-07-24T15:49:25.390 に答える
3

どうですか:

".*/([^/#]*)(#.*|$)"
于 2013-07-24T15:45:37.720 に答える