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

在Ansible任务中使用正则从JSON提取token值失败如何解决?

错误原因
  • 错误1:直接对列表类型的token.stdout_lines使用regex_search过滤器,该过滤器默认只会尝试匹配列表的第一个元素(第一个元素是{,不可能命中你写的正则规则),自然返回null
  • 错误2:regex_search参数写死了字符串'regexp',没有引用你定义的regexp变量,相当于用字符串regexp去匹配内容,不可能匹配成功
  • 错误3:正则表达式规则逻辑错误,对双引号、转义符的捕获规则不符合你拿到的输出结构,无法正确匹配token字段
最优解决方案(推荐,比正则更稳定)

你拿到的token.stdout_lines本质是拼接后可以直接解析的JSON字符串,先拼接再转成JSON对象直接取字段即可,不需要写正则:

- set_fact:
    myvalue: "{{ (token.stdout_lines | join('') | from_json).token }}"
- debug:
    var: myvalue
正则实现方案(如果你一定要用正则的场景)

先把列表合并为字符串,再用正确的正则捕获:

- set_fact:
    myvalue: "{{ token.stdout_lines | join('') | regex_search(regexp, '\\1') | first }}"
  vars:
    regexp: '"token"\s*:\s*"([^"]+)"'
- debug:
    var: myvalue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:39:00