从 Ansible 中的变量中提取子字符串

Extract a substring from a variable in Ansible

我想从 Ansible 中的一个变量中删除一个特定的子字符串,并将结果存储到另一个变量中。假设我有如下内容:

greeting: "Hello_World"

我想从 greeting 中删除子字符串 "_World" 并将结果存储在另一个 Ansible 变量中。

示例: greet_word: "Hello"

提前致谢!

问:"删除子字符串'_World'"

A:使用regex_replace,例如

    - set_fact:
        greet_word: "{{ greeting|regex_replace('^(.*)_World(.*)$', '\1\2') }}"

给予

  greet_word: Hello

也可以在下划线'_'处拆分字符串。下面的任务给出了相同的结果。它更简单,但只需要第一个元素。如果下划线分隔的元素较多,则使用第一个示例。

    - set_fact:
        greet_word: "{{ greeting.split('_').0 }}

你可以试试set_fact module and regular expressions

    - name: Extract substring from a variable
      set_fact:
        new_variable: "{{ variable | regex_search() }}"

可以使用任何在线服务测试正则表达式,也可以使用 debug

检查您得到的结果