Php 正则表达式匹配的字符串太多

Php 正则表达式匹配的字符串太多,php,regex,Php,Regex,我正在尝试使用以下正则表达式使用preg\u match匹配多个字符串: ^/test/(.+?)(\/.+^/?)?$ 以下字符串的结果如下所示 匹配(应该匹配) 不匹配(不应该匹配) 匹配(不应该匹配) 有人能告诉我如何让最后一个失败吗?将正则表达式分解,本质上它应该匹配一个文本/test,后跟一个必需的/something和一个可选的/something,但在下一次出现/something时停止 希望这是有意义的。用[^\/]替换你的,否则点会匹配一些斜线。用[^\/]替换你的,否则点会匹

我正在尝试使用以下正则表达式使用
preg\u match
匹配多个字符串:

^/test/(.+?)(\/.+^/?)?$

以下字符串的结果如下所示

匹配(应该匹配)

不匹配(不应该匹配)

匹配(不应该匹配)

有人能告诉我如何让最后一个失败吗?将正则表达式分解,本质上它应该匹配一个文本
/test
,后跟一个必需的
/something
和一个可选的
/something
,但在下一次出现
/something
时停止


希望这是有意义的。

[^\/]
替换你的
,否则点会匹配一些斜线。

[^\/]
替换你的
,否则点会匹配一些斜线。

尝试以下模式:

preg_match('~^/test(?>/[^/]++){1,2}+$~', $yourstring)
尝试以下模式:

preg_match('~^/test(?>/[^/]++){1,2}+$~', $yourstring)

哪个点?第二个?您可以同时替换这两个,因为“或”点都不应与斜线匹配。哪个点?第二个?您可以同时替换这两个,因为nor和dot都不应该匹配斜杠。
preg_match('#^/test/(.+?)(\/.+?)?$#', '/test/segment/another-segment/yet-another/segment'); // true
preg_match('~^/test(?>/[^/]++){1,2}+$~', $yourstring)