使用 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
我想使用 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