【问题标题】:Ansible regex_replace insert value after regex match正则表达式匹配后的 Ansible regex_replace 插入值
【发布时间】:2020-03-22 18:18:30
【问题描述】:

我有一个版本变量,我需要拆分并插入一个 .中间

我试过了

ansible localhost  -e version=300 -m debug -a "msg={{ version  | regex_replace('\d{1,2}', '.\g<0>' ) }}"

但是o/p是

TASK [debug] ********************************************************************************************************************************************************************************************************************************
ok: [localhost] =>
  msg: .30.0

有一个 .首先添加 .30.0。我可以使用 regex_repace 删除第一个。在那之后。 但是还有其他更好的方法吗?为什么模式将小数点放在第一位?

【问题讨论】:

    标签: ansible jinja2 regexp-replace


    【解决方案1】:

    问:“为什么pattern把小数点放在第一位?”

    答:正则表达式\d{1,2} 匹配一位或两位数字。给定字符串300,这个正则表达式匹配前两位数字30。它将被替换为.\g&lt;0&gt;,它给出了

    .30
    

    下一个匹配是0,因为只剩下一个数字了。替换给了

    .0
    

    综合结果是

    .30.0
    

    问:“有什么办法可以直接在第二位后面插入“.”(点)?即30.0?”

    A:比如打游戏

    - hosts: localhost
      vars:
        my_string: '300'
      tasks:
        - debug:
            msg: "{{ my_string[0:2] ~ '.' ~ my_string[2:] }}"
        - debug:
            msg: "{{ my_string[:-1] ~ '.' ~ my_string[-1] }}"
    

    给予

    "msg": "30.0"
    "msg": "30.0"
    

    【讨论】:

    • 无论如何我可以在第二位之后直接插入 .(dot) 吗?即 30.0
    • 这符合我的目的,谢谢。我在哪里可以找到有关此用法的文档?这似乎与 regex_replace 模块非常不同。对不起,我很笨!
    • Python regex
    • 只是在玩,并且能够以积极的态度完成此任务,如果有人感兴趣,请在此处添加ansible localhost -e version=300 -m debug -a "msg={{ version | regex_replace('(?&lt;=\d{2}).', '.\g&lt;0&gt;') }}"
    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多