I'm trying to match the following with this Regexp:
/(?<route>(?:.*\/){1,2}?)(?<group>(?:.*\/){1,2} )?/
- route/group/
- route1/route2/group/group2/
- route/group1/group2/
- route/
Tried to make the first group lazy and the second one greedy and optional but it doesn't match. What am I missing?
Initial Demo: https://regex101.com/r/aRvvQE/2
Trying to integrate the patterns from the answers into a full URL: https://regex101.com/r/O6GVVN/4
CodePudding user response:
Assuming there is a file extension at the end of the path then you could use:
(?<route>(?:[^/\s]*\/){1,2}?)(?<group>(?:[^/\s]*\/){0,2})(?=[^/]*\.)
If not then change \.
to $
or whatever suits.