我有一个这种形式的路由系统:website/(:option)(:option)(:option(:option))
或
website/archive(/:year(/:month(-:day))) (/page/:page)
。 ( )
表示可选路径,:string
表示将被替换的变量。在嵌套括号的情况下,我需要继续所有变量(可能有无限个括号)。
我在PHP中使用PCRE。我需要选择所有(:string)
,所以我想到了这个正则表达式:\([^\(\)]*:[^\(\)]+\)
。我遇到了递归和组正则表达式搜索的问题。
示例:website/archive(/2015(/:month(:day)))
将选择(/:month(:day))
示例:website/archive(/:year(/03(27)))
将选择(/:year(/03(27)))
有人可以向我解释递归是如何工作的,甚至是否可以这样做?