是否可以使用正则表达式 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()
,这工作正常,因为它应该创建一个列表的子集,这正是我在这种情况下所需要的。
我正在尝试创建一个脚本,该脚本仅使用正则表达式 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()
,这工作正常,因为它应该创建一个列表的子集,这正是我在这种情况下所需要的。