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

如何使用正则表达式获取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)); }