模板解析器

| 我想创建一个解析器来替换如下所示的文本(类似于MediaWiki的语法):
some text {{template|parameter1|parameter2}} some text
正则表达式应与花括号之间的文本匹配(模板名称和参数分为几组)。这就是我已经得到的。 我不进一步介绍的是无限嵌套的模板:
some text {{template|{{subtemplate|st-parameter}}|parameter2}} some text
文本应从最里面的模板替换为最外面的模板。我不确定如何编写上面示例中第一个右大括号时不会中断的正则表达式。最好的情况是,正则表达式仅匹配最里面的模板(内部没有
{{
}}
)。从哪儿开始?     
已邀请:
看来您正在遇到常规语言的限制。如果您正在执行诸如完全递归嵌入之类的操作,而没有任何简单的技巧可以告诉您最深层的嵌套在哪里(例如Ingo建议不要使用大括号),那么您想要使用上下文无关的语法。     
您只想匹配最里面的东西,这意味着文本可能不包含大括号(但括在大括号中):
\\{([^{}]*)\\}
您的结果将在匹配器组1中。     

要回复问题请先登录注册