You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible的regex_findall正则表达式内插入变量的正确语法是什么

问题原因

你当前的写法存在两个核心错误:

  1. Jinja2 表达式嵌套问题:regex_findall 已经放在{{ }}的Jinja2渲染上下文里了,内部直接引用变量不需要再加一层{{ }}
  2. 正则字符串的引号转义冲突:你用了转义的双引号包裹正则,同时正则里的特殊字符、变量拼接的语法都会受干扰。

正确可运行写法

两种写法任选其一即可,均适配Ansible 2.9版本:

写法1:用波浪号做变量拼接

- debug:
    msg: "{{ nodeId.content | regex_findall('(\\w+-\\w+-\\w+-\\w+-\\w+)..<address>\\d+\\.\\d+\\.\\d+\\.\\d+:?\\d+?<\\/address><name>' ~ the_name) }}"
  delegate_to: 127.0.0.1

写法2:用Jinja2字符串格式化

- debug:
    msg: "{{ nodeId.content | regex_findall('(\\w+-\\w+-\\w+-\\w+-\\w+)..<address>\\d+\\.\\d+\\.\\d+\\.\\d+:?\\d+?<\\/address><name>%s' % the_name) }}"
  delegate_to: 127.0.0.1

关键注意点

  • 正则里的所有反斜杠需要做二次转义,即原本的\d要写成\\d,因为YAML字符串解析时会先转义一次,传递到正则引擎时才能保留正确的语法
  • 正则内引用变量不需要加任何花括号,直接拼接变量本身即可

内容的提问来源于stack exchange,提问作者CaptainSkyfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 09:45:02