2017-08-31 102 views
-1

我想用Text::Balanced提取使用{{ ... }}[[一些標記... ]]標記其超鏈接。例如:使用文本::平衡,以找到括在括號內脂肪串{{..}}或[[..]]

This line contains {{path:to:mediafile|a hyperlink}} and [[path:to:page|another]] too. 

extract_bracketed()是在這個意義上聰明,它知道支架對 - {}[]<>() - 並尋找開啓和關閉括號是相同的「形狀」。但是,我不能使用它,因爲它只適用於單字符括號。

我可以使用extract_tagged()在時間找到一個這樣類型的「胖支架」的,但如果它的理解幾個對稱支架對就好。 有沒有辦法使用Text :: Balanced來提取字符串,例如{{}}[[]],但不包括{{]]

回答

0

由於他們不能嵌套,也可以比較容易地完成,無需文本::平衡。

s/ 
    \{\{ ((?:(?!\}\}).)*) \}\} 
    | 
    \[\[ ((?:(?!\]\]).)*) \]\] 
/
    defined($1) ? handle_curlies($1) : handle_squares($2) 
/sexg 
+0

誠然,他們不能嵌套。這很好地工作。你介意說你作序的答案「而不是使用文本::平衡,...」? – Chap