我有一个包含一些应用程序景观名称的列表,我必须在Jinja2中寻找一个具有特殊字符的特定应用程序。
landscape_list:"cmdb:app1景观“,"cmdb:app2 (ex app3)景观”,"cmdb:app4景观“
app_to_look:"app2 (除app3外)“
我试图使用这段代码来测试列表:
{{landscape_list | select('search',land_key) | list | count > 0}}但是,当我尝试测试"app2 (ex app3)“时,总是得到0。
我认为这个问题与()这样的特殊字符有关。
是否可以在jinja2中查看特定应用程序的列表?
谢谢
发布于 2020-02-21 00:57:52
最后我使用了类似的方法。我没有使用搜索,而是使用contains作为搜索方法。
{{completed_list | select('contains',solution_search) | list | count > 0}}solution_search包含了我正在寻找的东西的全名。
{%-set solution_search = env_key ~' '~env_server_key ~' TEST'-%}其中,env_server_key是可以包含特殊字符的应用程序名称,而env_key是应用程序环境。
发布于 2020-02-16 21:47:25
Q:“这个问题与()这样的特殊字符有关。”
答:是的。括号必须在regex中转义。例如
- set_fact:
land_key: 'app2 \(ex app3\)'
- debug:
msg: "{{ landscape_list|select('search', land_key)|list }}"
- debug:
msg: "{{ landscape_list|select('search', land_key)|list|length }}"
- debug:
msg: One or more items match the searched pattern.
when: landscape_list|select('search', land_key)|list|length > 0给
"msg": [
"cmdb:app2 (ex app3) landscape"
]
"msg": "1"
"msg": "One or more items match the searched pattern."https://stackoverflow.com/questions/60252567
复制相似问题