繁体   English   中英

PCRE中的递归正则表达式和组搜索

[英]Recursive regex and group searching in PCRE

我有这样一种路由系统: 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)))

正则表达式

有人可以向我解释递归的工作原理,甚至可以做到吗?

试试这个模式

 (\\((?:[^()]|(?R))*\\)) 

演示版


阅读下面的评论后,请使用此模式,并对照子模式#1进行检查

\(([^():\r\n]*:[^()]+(\((?:[^()]|(?2))*\))\))

演示版
如果不是多行输入,则可以删除\\r\\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM