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

时间:2015-09-28 12:46:39

标签: php regex

我需要为我正在处理的应用程序匹配几个网址;

所以,我有这个参考字符串:

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

我需要一个匹配

的模式
content

OR

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

到目前为止,我所做的是提出这种模式:

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

有以下问题:此字符串返回一个匹配,否则不应该:

content/course/32/lesson/61/content

我认为它与content重复两次有关,但我并不完全确定。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

匹配的原因是交替。

content\/?$

匹配

content/course/32/lesson/61/content

要解决此问题,请在正则表达式的开头添加^(行首)以确保整个字符串匹配,而不仅仅是结尾:

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

See it in action

答案 1 :(得分:1)

这有效:

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