如何使用正则表达式过滤ansible中的字符串

问题描述 投票:0回答:2

我正在使用 Ansible 读取值并解析它

价值

link: hdfs:///test/test2

输出应该是:

/test/test2

Ansible 不起作用:

   - set_fact:
        my_var: "{{ link | regex_search('hdfs://') }}"
     delegate_to: localhost
regex ansible
2个回答
2
投票

下面的任务可以完成任务

    - set_fact:
        my_var: "{{ link|regex_replace(_regex, _replace) }}"
      vars:
        _regex: '^(.*)/(.*)/(.*)$'
        _replace: '/\2/\3'

给予

  my_var: /test/test2

简单的拆分和合并也可以。下面的任务给出了相同的结果

    - set_fact:
        my_var: "/{{ link.split('/')[-2:]|join('/') }}"

0
投票

您可以尝试如下操作

  • basevariable 应设置为
    hdfs:///test/test2
- name: regex replace
  set_fact:
    final_var: "{{  basevariable | regex_replace(reg_search, reg_replace)  }}"
  tags:
    - reg-replace

更多信息

© www.soinside.com 2019 - 2024. All rights reserved.