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