0

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

http://stackoverflow/java/regex

我想得到以下

 java/regex

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

4

6 回答 6

7

当 Java 有URI!

final URI uri = URI.create("http://stackoverflow/java/regex");
uri.getPath().subString(1); // returns "java/regex"
于 2013-06-13T16:25:54.903 回答
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
于 2013-06-13T16:25:33.397 回答
1

您可以使用java.net.URL'getPath()方法

URL url = new URL("http://stackoverflow/java/regex");
System.out.println(url.getPath());
于 2013-06-13T16:27:53.530 回答
0

简单的!

如果你有绝对网址:

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

希望这可以帮助!

于 2013-06-13T16:25:50.680 回答
0

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

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

于 2013-06-13T16:27:42.840 回答
0

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

于 2013-06-13T16:29:27.250 回答