Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的正则表达式:word的强制第二次出现_Php_Regex - Fatal编程技术网

php中的正则表达式:word的强制第二次出现

php中的正则表达式:word的强制第二次出现,php,regex,Php,Regex,我需要为我正在开发的应用程序匹配一些URL 我得到了这个引用字符串: content/course/32/lesson/61/content/348 我需要一个匹配的模式 content 或 到目前为止,我所做的是提出以下模式: $my_regex = "/content(\/?|(\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4}))$/"; 但是,它有以下问题:此字符串返回一个不应匹配的匹配项: content/course/32/

我需要为我正在开发的应用程序匹配一些URL

我得到了这个引用字符串:

content/course/32/lesson/61/content/348
我需要一个匹配的模式

content

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

$my_regex = "/content(\/?|(\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4}))$/";
但是,它有以下问题:此字符串返回一个不应匹配的匹配项:

content/course/32/lesson/61/content
我认为这与单词
内容
重复两次有关,但我不能完全确定


非常感谢任何帮助。

比赛的原因是轮换

content\/?$
火柴

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

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

比赛的原因是交替

content\/?$
火柴

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

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

这项工作:

/(^content\/?|content\/course\/\d{1,4}\/lesson\/\d{1,4}\/content\/\d{1,4})$/
这项工作:

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

加上1,我的想法是一样的:)@ndn很好的解释。容易解决。谢谢。加上1,我也这么想:)@ndn很好的解释。容易解决。谢谢。如果您的模式包含大量斜杠,那么使用不同的正则表达式分隔符就更容易了,而不必转义所有内容。请尝试删除此部分
(\/?
尝试删除此部分
(\/?
并匹配最后一个括号
$
之前如果您的模式包含大量斜杠,那么使用不同的正则表达式分隔符就更容易了,而不必转义所有内容。请尝试删除此部分
(\/?|
尝试删除此部分
(\/?|
并匹配最后一个括号
$/code>之前