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

Ansible regex_search多捕获分组重组输出数组问题如何修复

问题根因

你用错了Jinja2过滤器:regex_search的核心作用是检索匹配的内容,当传入多个捕获组引用参数时,它会返回各捕获组组成的列表,而非拼接后的字符串,这就是你得到数组而非目标版本字符串的原因。

你要实现的是字符串替换逻辑,直接使用regex_replace过滤器即可,它会将整段匹配到的内容替换为你指定的捕获组拼接格式,直接返回字符串类型的结果。

修复后代码

set_fact:
  cacheable: yes
  mydict: "{{ mydict | combine({ 'version': myvar | regex_replace('^0*(\\d+)\\.0*(\\d+)\\.0*(\\d+)$', '\\1.\\2.\\3') }) }}"

可选方案(坚持使用regex_search的场景)

如果你确实需要用regex_search实现,可以将返回的捕获组列表用join过滤器拼接:

set_fact:
  cacheable: yes
  mydict: "{{ mydict | combine({ 'version': myvar | regex_search('0*(\\d+)\\.0*(\\d+)\\.0*(\\d+)', '\\1', '\\2', '\\3') | join('.') }) }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:51:03