PHP中的正则表达式:强制第二次出现的单词

I need to match a few urls for an application I'm working on;

So, I've got this reference string:

content/course/32/lesson/61/content/348

and I need a pattern that matches either

content

OR

content/course/[number]/lesson/[number]/content/[number]

What I've done so far is come up with this pattern:

$my_regex = "/content(\/?|(\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4}))$/";

which however has the following problem: This string returns a match which should otherwise not:

content/course/32/lesson/61/content

I'm thinking that it's got something to do with the word content repeating twice but I'm not entirely sure.

Any help is much appreciated.

The reason for the match is the alternation.

content\/?$

matches

content/course/32/lesson/61/content

To fix this, add a ^ (beginning of line) to the start of your regex to ensure the entire string is matched and not only the ending:

/^content(\/?|(\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4}))$/

See it in action

this works:

/(^content\/?|content\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4})$/