使用 Text::Balanced 查找包含在大括号 {{..}} 或 [[..]] 中的字符串

Using Text::Balanced to find strings enclosed in fat brackets {{..}} or [[..]]

我想使用 Text::Balanced 来提取一些使用 {{...}}[[...]] 来标记它的标记超链接。例如:

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

extract_bracketed() 很聪明,因为它知道括号对 --{}[]<>()-- 并且看起来对于相同的左括号和右括号 "shape"。不过,我不能使用它,因为它只适用于单字符括号。

我可以用extract_tagged()一次找到一个这样的"fat bracket",但如果它能理解几个对称括号对就好了. 有没有一种方法可以使用 Text::Balanced 来提取由 {{}}[[]] 而不是 {{ 包围的字符串] 和 ]],例如?

因为它们不能嵌套,所以不用 Text::Balanced.

也可以很容易地完成
s/
   \{\{ ( (?:(?!\}\}).)* ) \}\}
   |
   \[\[ ( (?:(?!\]\]).)* ) \]\]
/
   defined() ? handle_curlies() : handle_squares()
/sexg