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

如何使用Ansible regex_search获取正则匹配的第N个目标值

Ansible regex_search 提取版本号解决方案

最优稳定写法

推荐两种经过验证的实现方式,均可直接得到目标字符串:

方式1:单正则捕获(性能最优)

- debug:
    msg: "{{ displayversion | regex_search('\\(\\S+\\s+([^)]+)\\)', '\\1') | first }}"
  vars:
    displayversion: VRP (R) software, Version 5.170 (S5735 V200R019C00SPC500)

运行输出直接为:V200R019C00SPC500
逻辑说明:正则匹配最后一个左括号\(,跳过括号内第一个非空格字段和后续空格\S+\s+,捕获直到右括号前的所有内容([^)]+),取第一个捕获组的内容即可得到目标值。

方式2:分步处理(可读性、容错性最高)

- debug:
    msg: "{{ displayversion | regex_search('(?<=\\().*(?=\\))$') | split | last }}"
  vars:
    displayversion: VRP (R) software, Version 5.170 (S5735 V200R019C00SPC500)

逻辑说明:先通过前后断言提取最后一个括号内的全部内容S5735 V200R019C00SPC500,按空格拆分后取最后一个元素,即使后续括号内字段数量、空格数发生变化,只要目标值是括号内最后一个字段就可以正常匹配,更易维护。


原有写法问题说明

  1. 前两个正则默认匹配第一个满足条件的括号内容,所以返回第一个括号的(R)
  2. 第三种写法匹配行尾最后一个空格后的所有内容,所以包含了末尾的右括号,且指定捕获组后regex_search返回的是列表类型,需要额外提取列表元素再处理多余符号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:11