我正在尝试从以下URI获取分组匹配:
route: "/user/{user}/{action}"
input: "/user/someone/news"
适当的正则表达式是什么?在过去的几个小时里,我一直在寻找自己的酸...
我尝试过这样的事情但没有结果:(
~\/app\/user\/(?P<user>[.*]+)\/(?P<action>[.*]+)~
我在匹配数组中返回组,但没有基于组内输入的结果。
期望的输出:
Array
(
[0] => Array
(
[0] => "someone"
)
[user] => Array
(
[0] => "someone"
)
[1] => Array
(
[0] => "news"
)
[action] => Array
(
[0] => "news"
)
)
通过一个例子澄清:
我的控制器有以下路线:/app/user/{username}/{action}
来自浏览器的请求URI为:/app/user/john/news
如何在捕获括号之间的变量时使用正则表达式模式将该请求URI与该路由匹配?
答案 0 :(得分:5)
/user/(?P<user>[^/]+)/(?P<action>[^/]+)
只是解释原始正则表达式的几个问题:
[.*]+
表示只出现点数和星号的正数,例如:*.*.*
或.
或......
; [^/]+
描述了任意字符的正数,但是斜杠。~
作为分隔符时,它们不是特殊字符。