正規表現を使用して URL の最後の部分を取得するにはどうすればよいですか。これが私の URL です。最後のスラッシュと # の間のセグメントが必要です。
http://mycompany.com/test/id/1234#this
だから私は取得したいだけです1234
。
私は次のものを持っていますが、「#this」を削除していません
".*/(.*)(#|$)",
データのインデックス作成中にこれが必要なので、URL クラスを使用したくありません。
使用するだけ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));
}
どうですか:
".*/([^/#]*)(#.*|$)"