我想知道维基媒体如何将其模型语法({{model|options}})
转换为html代码。
我有一个简单模型({{.*?}})
的正则表达式,但它对于嵌套模型失败(例如:{{model|options containing a {{submodel|options}}...}}
)
答案 0 :(得分:1)
记住,
有些人在遇到问题时会想“我知道,我会用 正则表达式。“现在他们有两个问题。 - Jamie Zawinski
那就是说,你可以阅读:Forum tags. What is the best way to implement them?我做了一个嵌套标签的例子,包括“纯”正则表达式和一个“更稳定”的C#解析器,它使用一些正则表达式,但保持堆栈不在正义之手。
您可以使用balancing groups
执行此操作。它们不是“基础”正则表达式的一部分(有些人不认为它们是真正的正则表达式),
但是我不会用类似正则表达式的东西编写像维基这样大的东西。正则表达式的问题在于,对它们进行编程是非常困难的,因此它们不会回溯(有一个选项可以做到这一点,但是很难构建一个不需要回溯或只需要有限回溯的正则表达式) ,当他们开始回溯它的结束时:他们可能会停留几分钟,寻找合适的捕获组合。