从Jinja2(正则表达式?)中的网址中删除尾随/。

时间:2019-02-11 12:56:18

标签: regex jinja2 mkdocs

我有一个使用Jinja2的MkDocs网站的模板。我正在尝试添加指向每个页面的PDF版本的链接。 PDF始终与降价文件具有相同的名称。因此,我尝试在模板中添加一个链接,该链接将自动针对每个页面指定正确的PDF。这比让编写者在每个页面上添加手动链接要干净得多。

<a href="{{ page.url|url }}.pdf">Download</a>

以上内容几乎是正确的,但是所有URL的末尾都有一个“ /”。表示结果是:

page/url/slug/.pdf

MkDocs和Jinja似乎都没有提供删除尾部斜杠的过滤器,因此我想知道是否可以使用正则表达式删除它。我相信那会像\/$一样简单吗?但是,我无法从文档中看到如何在Jinja中应用正则表达式过滤器?

2 个答案:

答案 0 :(得分:1)

因此我为我的特定情况找到了一种解决方法,但这很讨厌:

<a href='{{ config.site_url }}{{ page.url | reverse | replace("/", "", 1) | reverse }}.pdf'>Download</a>
  1. 添加网站URL
  2. 获取当前页面的网址,将其反转,使用带有可选count参数的replace删除FIRST'/',然后再次反转以正确的顺序将其返回
  3. 附加“ .pdf”

根据上述Jan所链接的问题的答案之一,您不能在不进入自定义过滤器的情况下简单地在Jinja2中使用正则表达式。

答案 1 :(得分:0)

<a href="{{ page.url | replace("/$", "")}}.pdf">Download</a>

其中$是行的结尾/字符串的结尾。

因此,/$表示末尾的/