【问题标题】:Ansible regex_replaceAnsible regex_replace
【发布时间】:2017-11-10 12:05:24
【问题描述】:

我正在尝试捕获变量的主版本号,为此我正在尝试删除主版本号之后的数字:

variable.yml:

version: 3.9.5
main_version: "{{ version | regex_replace('^.*(..)$', '')}}"

这应该给我3.9,但是调试什么也没给我。

这样做的正确方法是什么?

(并确保它仍然能够处理诸如3.10.1 之类的东西,因此这将返回3.10main_version,以及诸如3.10.1-rcblah 之类的东西,这将返回一个@ 987654328@3.10)

【问题讨论】:

    标签: regex ansible yaml ansible-2.x


    【解决方案1】:

    我猜你的正则表达式应该是这样的:

    '^.*(\.[0-9]*)$'
    

    但是你为什么不使用version_comparehttp://docs.ansible.com/ansible/latest/playbooks_tests.html#version-comparison

    【讨论】:

    • 谢谢,我不得不双重转义让 yml 接受它。所以我的完整命令是main_version: "{{ version | regex_replace('^(.*)(\\.[0-9]*)$', '\\1') }}"
    • 我查看了 version_compare,但看不出它对我的方案有何作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多