Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Regex: How to Match URL Path?

Tags:

java

regex

url

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?

like image 928
David Williams Avatar asked Mar 19 '23 04:03

David Williams


1 Answers

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?://[^/]+/([^/]+)/");
like image 146
anubhava Avatar answered Mar 28 '23 23:03

anubhava