Home > front end >  Repeating variable length segments in Regex
Repeating variable length segments in Regex

Time:04-16

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.

  • Related