Dinoop Nair
Dinoop Nair

Reputation: 2773

get the last portion of the link using java regex

I have an arraylist links. All links having same format abc.([a-z]*)/\\d{4}/

List<String > links= new ArrayList<>();
        links.add("abc.com/2012/aa");
        links.add("abc.com/2014/dddd");
        links.add("abc.in/2012/aa");

I need to get the last portion of every link. ie, the part after domain name. Domain name can be anything(.com, .in, .edu etc).

/2012/aa
/2014/dddd
/2012/aa

This is the output i want. How can i get this using regex? Thanks

Upvotes: 0

Views: 58

Answers (6)

Braj
Braj

Reputation: 46841

Try with below regex and use regex grouping feature that is grouped based on parenthesis ().

\.[a-zA-Z]{2,3}(/.*)

Pattern description :

dot followed by two or three letters followed by forward slash then any characters

DEMO

Sample code:

Pattern pattern = Pattern.compile("\\.[a-zA-Z]{2,3}(/.*)");
Matcher matcher = pattern.matcher("abc.com/2012/aa");

if (matcher.find()) {
    System.out.println(matcher.group(1));
}

output:

/2012/aa

Note:

You can make it more precise by using \\.[a-zA-Z]{2,3}(/\\d{4}/.*) if there are always 4 digits in the pattern.

Upvotes: 2

Akash Thakare
Akash Thakare

Reputation: 22972

FOR EXAMPLE

String s="abc.com/2014/dddd";
System.out.println(s.substring(s.indexOf('/')));

OUTPUT

/2014/dddd

Or you can go for split method.

System.out.println(s.split("/",2)[1]);//OUTPUT:2014/dddd --->you need to add /

Upvotes: 1

Esteban
Esteban

Reputation: 1706

Try this one and use the second capturing group

(.*?)(/.*)

Upvotes: 1

Mikkel L&#248;kke
Mikkel L&#248;kke

Reputation: 3749

Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.

Why not just use the URI class?

output = new URI(link).getPath()

Upvotes: 1

Kent
Kent

Reputation: 195049

String result = s.replaceAll("^[^/]*","");

s would be the string in your list.

Upvotes: 1

Brian Agnew
Brian Agnew

Reputation: 272257

Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.

(see here for background)

Why use regex ? Perhaps a simpler solution is to use String.split("/") , which gives you an array of substrings of the original string, split by /. See this question for more info.

Note that String.split() does in fact take a regex to determine the boundaries upon which to split. However you don't need a regex in this case and a simple character specification is sufficient.

Upvotes: 3

Related Questions