+-

我试图提取URL路径的第一部分.例如:从http://foo.com/bar/1/2/3我想提取吧.这是我正在使用的代码:
private static String getFirstPartOfPath(String url)
{
Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/*$");
Matcher matcher = pattern.matcher(url);
if(matcher.find())
{
System.out.println(matcher.group(1));
}
return null;
}
但是,这与上面列出的最琐碎的网址不匹配,如
public static void main(String[] args)
{
getFirstPartOfPath("http://foo.com/bar/1/2/3");
}
没有打印.乍一看,模式字符串看起来很清晰,就像它显然应该工作.出了什么问题?
最佳答案
不匹配,因为你的正则表达式不正确.你最终/ *与/.*不同.
使用这个正则表达式:
Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/.*$");
或删除锚$:
Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/");
点击查看更多相关文章
转载注明原文:Java Regex:如何匹配URL路径? - 乐贴网