如何使用正则表达式获取URL的最后一部分,这是我的URL,我想要在最后的正斜杠和#
之间划分http://mycompany.com/test/id/1234#this
所以我只想获得1234
。
我有以下内容但未删除'#this'
".*/(.*)(#|$)",
我在索引数据时需要这样做,所以不要使用URL类。
答案 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)
怎么样:
".*/([^/#]*)(#.*|$)"