如何获取网址的最后两部分。例如,如果URL是
http://stackoverflow/java/regex
我想得到以下
java/regex
正则表达式“。 /(。)”会给我最后一段,但我很难得到最后两部分。
答案 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()?