I have a URL:
www.domain.com/first/second/last/
How do I get the last term between slashes? i.e. last
using regular expressions?
Please note that the URL could just be:
www.domain.com/last/
Or:
www.domain.com/first/second/third/fourth/last/
I need to extract this last term for use in the Zeus Server's Request Rewrite module which uses PERL and REGEX.
After implementing some answers, I have just realized that I need this match to be made only on URLs in a certain directory.
i.e.
www.domain.com/directory/first/second/last/
should return last
. Whereas:
www.domain.com/first/second/last/
should not return a match.
End of String or Line: $ The $ anchor specifies that the preceding pattern must occur at the end of the input string, or before \n at the end of the input string. If you use $ with the RegexOptions. Multiline option, the match can also occur at the end of a line.
URL regular expressions can be used to verify if a string has a valid URL format as well as to extract an URL from a string.
Here's a simple regex:
[^/]+(?=/$|$)
Should match anything you throw at it.
If you want to look in a particular directory, use this:
/directory.*/([^/]+)/?$
and your result will be in the first capture group.
This regex (a slightly modified version of Joseph's answer), should give you the last segment, minus ending slash.
([^/]+)/?$
Your result will be the first capture group.
This should do the trick:
[^/]+(?=/$|$)
With a (?=lookahead)
you won't get the last slash.
[^/]+
Looks for at least one character that is not a slash (as many as possible).
(?=/?^|^)
makes sure that the next part of the string is a / and then the end of string or just end of string.
Matches match
in /one/two/match
, '/one/two/match/'.
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