使用正则表达式获取url的最后一部分

时间:2013-07-24 15:41:59

标签: java regex solr

如何使用正则表达式获取URL的最后一部分,这是我的URL,我想要在最后的正斜杠和#

之间划分
http://mycompany.com/test/id/1234#this

所以我只想获得1234

我有以下内容但未删除'#this'

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

我在索引数据时需要这样做,所以不要使用URL类。

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:2)

怎么样:

".*/([^/#]*)(#.*|$)"