簡體   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