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 extract bar.  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?
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?://[^/]+/([^/]+)/");
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With