正则表达式以获取URL的最后部分段

时间:2013-06-13 16:21:17

标签: java regex

如何获取网址的最后两部分。例如,如果URL是

http://stackoverflow/java/regex

我想得到以下

 java/regex

正则表达式“。 /(。)”会给我最后一段,但我很难得到最后两部分。

6 个答案:

答案 0 :(得分:7)

当Java有URI时,请不要使用正则表达式!

final URI uri = URI.create("http://stackoverflow/java/regex");
uri.getPath().subString(1); // returns "java/regex"

答案 1 :(得分:1)

你可以试试这个:

String url = "http://stackoverflow/java/regex";
Pattern pattern = Pattern.compile(".+/(.+/.+)$");
Pattern otherPattern = Pattern.compile(".+/(.+)/.+$");
Matcher matcher = pattern.matcher(url);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}
matcher = otherPattern.matcher(url);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出:

java/regex
java

答案 2 :(得分:1)

您可以使用java.net.URL的{​​{1}}方法

getPath()

答案 3 :(得分:0)

简单!

你有绝对的网址:

Pattern p = Pattern.compile("http://(^[/]+)/([^/]+)/([^/]+);
Matcher m = p.matcher(yourURL);
if (m.find()) {
    path1 = m.group(2);
    path2 = m.group(3);
}

希望这有帮助!

答案 4 :(得分:0)

我会使用现有的URL类和getPath()方法来获取主机/端口/协议之后的部分。

我当然要从一个现有的类开始,该类旨在拆分URL组件,然后从那里开始工作。如果你使用正则表达式,你可能会碰到并且必须满足URL类已经处理的许多边缘情况。

答案 5 :(得分:0)

为什么不将您的URL转换为URI并调用方法getPath()?