jinja2 过滤器中的正则表达式匹配(用于 saltstack)

sxc*_*731 6 regex jinja2 salt-stack

Jinja2(在 Saltstack 中支持)似乎不支持正则表达式匹配,除非我遗漏了什么?许多利用 Jinja2 的框架,例如Ansible,都有对正则表达式过滤器的自定义支持在其他地方,人们被指示编写自定义过滤器。

向知情人士提出的一些问题可能有助于理解这种情况:

  1. 在 Saltstack 中利​​用正则表达式匹配的最佳方法是什么?(我这里的用例相当简单:测试字符串是否以子字符串结尾,但问题更一般)。
  2. 在 Jinja2 中没有标准解决方案的情况下,将其作为 Saltstack 中的标准扩展提供(类似于 Ansible 解决方案)是否是个好主意?
  3. 在 Jinja2 中没有标准正则表达式支持的理由是什么?在一个连 Windows Powershell 都支持正则表达式匹配的世界里,一定有我失踪的原因,因为自 2010 年以来,Jinja2 与以前版本相比的这种感知回归一直受到抱怨;但是在我能找到的Jinja 的 github中甚至没有这个问题?

blu*_*ish 6

即使它很旧,在谷歌搜索盐匹配正则表达式时,它仍然是最上面的帖子。在2018.3.3中可以编写以下代码:

{% if "abc" is match("*b*") %}
...
{% endif %}
Run Code Online (Sandbox Code Playgroud)

相关文档链接:https://docs.saltstack.com/en/latest/topics/jinja/index.html#match


小智 5

这是一篇过时的帖子,但我偶然发现了它并帮助其他做同样事情的人。

自 2017.7.0 起,SaltStack 现在具有 regex_search 和 regex_match:

https://docs.saltstack.com/en/latest/topics/jinja/index.html#regex-search