Java Regex: How to Match URL Path?
20,598
Not matching because your regex is not correct. You have /*
in the end that is not same as /.*
.
Use this regex:
Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/.*$");
Or remove anchor $
:
Pattern pattern = Pattern.compile("^https?://[^/]+/([^/]+)/");
Author by
David Williams
Updated on July 31, 2022Comments
-
David Williams almost 2 years
I am trying to extract the first part of the path of a URL. For example: from
http://foo.com/bar/1/2/3
I want to extractbar
. Here is the code I am using: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; }
However, this does not match the most trivial url listed above, as in
public static void main(String[] args) { getFirstPartOfPath("http://foo.com/bar/1/2/3"); }
prints nothing. At first glance the pattern string seems clear and like it should obviously work. What is going wrong?
-
David Williams almost 10 yearsGot it, thanks. I will accept when SO lets me in 9 min.