我正在使用 C# 开发 HTML 模板引擎。我想实现一些与 Handlebars.Net(Handlebars.js 的 C# 实现)等库相同的功能,除了使用基本的字符串操作(查找/替换)而不是完整的编译器。
语法将是这样的:
{{#each item in items}}
<li>{{item.Name}}</li>
{{/each}}
我希望用 Regex 进行简单的字符串替换,但我意识到 Regex 在这方面会有缺点,例如在下面的示例中找到结束标记(它会找到第一个嵌入的 {{/each}} 而不是最后一个解析第一个标签):
{{#each item in items}} //while parsing this tag...
<p>{{item.Name}}'s Hobbies:</p>
<ul>
{{#each hobby in item}}
<li>{{hobby.Name}}</li>
{{/each}} //this end tag would be found first
</ul>
{{/each}} //rather than this one
为了解析每个标签。“DOM”可以在彼此内部嵌入多个标签(想想嵌入的 foreach 循环 x4)。什么是实现这一目标的好方法?