【发布时间】:2016-11-12 14:40:25
【问题描述】:
我正在使用 Jekyll 构建网站我想从给定的 HTML 文件中自动删除流动代码(和仅流动代码)。我在 Python 中使用正则表达式来做这件事,到目前为止我有这个:
\{.*?\}|\{\{.*?\}\}
由于我对液体(和 .html)不太熟悉,有人可以确认这足以满足我的目标吗?
这是我将使用的文件类型的示例:
<div class="post-preview">
<div class="post-title">
<div class="post-name">
<a href="{{ post.url }}">{{ post.title }}</a>
</div>
<div class="post-date">
{% include time.html %}
</div>
</div>
<div class="post-snippet">
{% if post.content contains '<!--break-->' %}
{{ post.content | split:'<!--break-->' | first }}
<div class="post-readmore">
<a href="{{ post.url }}">read more-></a>
</div>
{% endif %}
</div>
{% include post-meta.html %}
</div>
在这种情况下,我的正则表达式有效,但我想确保我不会错过未来的任何东西。我可以采取一种骇人听闻的方式,并用 cmets 将所有流动代码包围起来
/* start_liquid */ {blalala} /* end_liquid */
但我正在寻找一种更优雅的方式来做到这一点。
【问题讨论】:
-
投反对票的人能说出他们的理由吗?
-
我实际上并没有投反对票,但我认为他们希望您提供一个流动代码示例以获得一个完整的工作示例。
-
我检查了您提供的代码。它看起来不错,我在下面给你的正则表达式只匹配 {} 或 {{}} 所包含的代码。如下所述,我只会半自动替换。顺便用Kate验证一下……
-
你能更详细地解释一下,你想用匹配的液体代码做什么?你想删除它还是用 cmets 包围它?为什么你的解决方案不优雅?我不明白缺少什么。
-
所以,我有一堆像这样的 html 文件,我可能需要从流动代码中清除它们,然后注入具有类似功能的 javascript 代码。所以我不想手动四处插入 cmets,也不想在引入更多流动代码的任何时候再次放入 cmets。我也不想将 .html 文件与 Liquid 和 javascript 分开,因为我可能会决定在以后更改 HTML 本身。因此我的问题:)