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)