是否可以使用正则表达式 select 列表中的项目?

Is it possible to select an item within a list with a regex?

我正在尝试创建一个脚本,该脚本仅使用正则表达式 select 处理列表中的一个项目。

在我的例子中,基于特定的条件,当特定字符集不在名称中时应该被触发,然后只是 select 那个项目。

到目前为止,我已经在 ansible 角色中生成了以下代码:

- name: "Set_initial_regex"
  set_fact:
    name_regex: ".*((-a)+(\d)?)\..*\.company\..+"
    # This regex should select any FQDN with "-a" followed by an optional number within its name (e.g. fqdn-test-a1.test.company.local)
  
- name: "Debug"
  debug:
    msg: "{{ name | split(',') | regex_search(name_regex) }}"

name变量是--extra-vars提供的,可以有多个,但通常只有两个。它们由逗号分隔 - 因此 split.

上面的代码适用于 | first| last 而不是 regex_search,但我正在寻找更自定义的东西。

此时返回的输出是(例如):

"msg": [
    "fqdn-test-a1.test.company.local",
    "fqdn-test-b1.test.company.local"
]

在这种情况下,所需的输出应该只是

"msg": [
    "fqdn-test-a1.test.company.local"
]

提前感谢您提供的任何帮助或见解。

我找到方法了;以下代码适用于此目的:

- name: "Debug"
  debug:
    msg: "{{ name | split(',') | select('search', name_regex) }}"
  vars:
    name_regex: ".*((-a)+(\d)?)\..*\.company\..+"

这 returns 上面提到的所需输出。

对于 select(),这工作正常,因为它应该创建一个列表的子集,这正是我在这种情况下所需要的。