【问题标题】:parsing substring from variable with ansible用ansible从变量中解析子字符串
【发布时间】:2020-01-12 04:50:36
【问题描述】:

我有这个片段:

---
- hosts: all
  gather_facts: False
  become: yes
  become_user: somesu
  become_method: sudo

  tasks:

  - set_fact:
      tmped: "{{varput | regex_search('(^(?:[^.]*.){4}([^.]*))')}}"

  - debug: msg="{{ tmped }}"

...

varput 是

TEST123TEST.4.TES22TES.ZTER012UZT.20190910.555

我希望调试打印出来

20190910

但是我的正则表达式打印出来

TEST123TEST.4.TES22TES.ZTER012UZT.20190910

知道如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: regex variables ansible substring yaml


    【解决方案1】:

    您已经将必要的文本捕获到第 1 组中。

    您可以将第二个捕获组 ID 参数传递给 regex_search 以返回所需的捕获组值:

    tmped: "{{varput | regex_search('^(?:[^.]*\\.){4}([^.]*)','\\1') }}"
    

    请参阅ansible source code

    【讨论】:

      【解决方案2】:

      使用拆分

      tmped: "{{ varput.split('.')[-2] }}"
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值.
      • 字符串 1) 拆分为一个数组,2) 最后但选择了数组的一个元素。
      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2021-11-10
      • 2017-11-10
      相关资源
      最近更新 更多