在 ansible 任务中使用正则表达式从 json 中抓取值

Using regex in scraping value from json in ansible task

我在 ansible 中有一个任务,我必须从 json 对象中提取令牌的值,如下所示:

{
"token.stdout_lines": [
    "{",
    "\t\"id\": \"08320829d85c7000\",",
    "\t\"description\": \"\",",
    "\t\"token\": \"zMiyCw7X6u_IjBpTbD1Nvt4eGk-dxBXWWOqRCgWh_KiYtp7AjD5mML5mBIEtApncBSXwU3QqexT_4VVmEv0WeA==\",",
    "\t\"status\": \"active\",",
    "\t\"userName\": \"telegraf\",",
    "\t\"userID\": \"0831cb0c68dc7000\",",
    "\t\"permissions\": [",
    "\t\t\"read:orgs/ea37b04111f50748/buckets\",",
    "\t\t\"write:orgs/ea37b04111f50748/buckets\"",
    "\t]",
    "}"
]
}

为了检索令牌的值,我遵循了以下步骤:

- set_fact:
myvalue: "{{ token.stdout_lines | regex_search('regexp')}}"
  vars:
regexp: 'token([^"]+)":([^"]+)"([^.{\}$"]+)'
- debug:
var: myvalue

我得到的输出是 myvalue 中的空值。

谁能指出我哪里出错了?

非常感谢

不太确定在这种情况下正则表达式是否是最佳答案。

为什么不做一些像

- set_fact:
    myvalue: "{{ token.stdout_lines | from_json }}"
- debug:
    var: myvalue.token

更多信息见Ansible's website

我会尝试删除不需要的组。正则表达式:token[^"]+":[^"]+"([^.{\}$"]+)

Example