ansible.builtin.regex_search 过滤器 – 从字符串中提取正则表达式匹配结果
注意
此过滤器插件是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,您可以使用简短的插件名称 regex_search
。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.regex_search
,以便轻松链接到插件文档并避免与可能具有相同过滤器插件名称的其他集合发生冲突。
概要
在字符串中搜索以提取与正则表达式匹配的部分。
输入
此部分描述过滤器的输入,即 | ansible.builtin.regex_search
之前的数值。
参数 |
注释 |
---|---|
要匹配的字符串。 |
位置参数
此部分描述过滤器的 位置参数。这些参数是以下示例中的 positional1
、positional2
等值:input | ansible.builtin.regex_search(positional1, positional2, ...)
参数 |
注释 |
---|---|
定义匹配的正则表达式字符串。 |
关键字参数
此部分描述过滤器的关键字参数。这些参数是以下示例中的 key1=value1
、key2=value2
等值:input | ansible.builtin.regex_search(key1=value1, key2=value2, ...)
参数 |
注释 |
---|---|
如果 选项
|
|
如果 选项
|
备注
注意
当同时使用关键字参数和位置参数时,位置参数必须列在关键字参数之前:
input | ansible.builtin.regex_search(positional1, positional2, key1=value1, key2=value2)
映射到 Python 的
re.search
。组匹配的子字符串可以通过符号组名或 ``\{number}`` 特殊序列访问。参见示例部分。
示例
# db => 'database42'
db: "{{ 'server1/database42' | regex_search('database[0-9]+') }}"
# Using inline regex flags instead of passing options to filter
# See https://docs.pythonlang.cn/3/library/re.html for more information
# on inline regex flags
# server => 'sErver1'
db: "{{ 'sErver1/database42' | regex_search('(?i)server([0-9]+)') }}"
# drinkat => 'BAR'
drinkat: "{{ 'foo\nBAR' | regex_search('^bar', multiline=True, ignorecase=True) }}"
# Extracts server and database id from a string using number
# (the substring matched by the group is accessible via the \number special sequence)
db: "{{ 'server1/database42' | regex_search('server([0-9]+)/database([0-9]+)', '\\1', '\\2') }}"
# => ['1', '42']
# Extracts dividend and divisor from a division
# (the substring matched by the group is accessible via the symbolic group name)
db: "{{ '21/42' | regex_search('(?P<dividend>[0-9]+)/(?P<divisor>[0-9]+)', '\\g<dividend>', '\\g<divisor>') }}"
# => ['21', '42']
返回值
键 |
描述 |
---|---|
匹配的字符串,如果未匹配则为空字符串。 返回:成功 |
提示
每个条目类型的配置条目具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。