Regex 用于删除word中特殊字符的正则表达式

Regex 用于删除word中特殊字符的正则表达式,regex,split,ansible,Regex,Split,Ansible,我有一个值:“VARIABLE=value0”,我只想取等号后面的部分,期望值:“value0” 当最后一个任务完成时,它会打印我:“value0']”(最后还有两个符号)。我的正则表达式对吗?或者如何添加新的正则表达式以删除这两个附加符号“']”?您的正则表达式工作正常。或者,您可以简化它,或者使用拆分过滤器 > cat test.yml - hosts: localhost vars: device_name: "VARIABLE=value0" tasks:

我有一个值:“VARIABLE=value0”,我只想取等号后面的部分,期望值:“value0”


当最后一个任务完成时,它会打印我:“value0']”(最后还有两个符号)。我的正则表达式对吗?或者如何添加新的正则表达式以删除这两个附加符号“']”?

您的正则表达式工作正常。或者,您可以简化它,或者使用拆分过滤器

> cat test.yml
- hosts: localhost
  vars:
    device_name: "VARIABLE=value0"
  tasks:
    - debug:
        msg: "regex_replace 1: {{ device_name | regex_replace('^(.*[\\=/])') }}"
    - debug:
        msg: "regex_replace 2: {{ device_name | regex_replace('.*=') }}"
    - debug:
        msg: "split: {{ device_name.split('=')[1] }}"


> ansible-playbook test.yml | grep msg
    "msg": "regex_replace 1: value0"
    "msg": "regex_replace 2: value0"
    "msg": "split: value0"

你可以自己做这个测试来检查你的正则表达式是否正确。如果输出值与您期望的不同,则您的正则表达式不正确。$。[\\=/]\']$它会给出一个错误:“任务执行期间发生异常。若要查看完整的回溯,请使用-vvv。错误为:第1行致命:[127.0.0.1]:失败!=>{“失败”:true,“消息”:“模块执行期间出现意外故障”。,“stdout”“:”“}”您应该在模式中转义
,否则字符串文字将被“损坏”。应该匹配的
[\\=/]
是什么?您是否尝试转义
=
?还是匹配三个字符:
\\
=
> cat test.yml
- hosts: localhost
  vars:
    device_name: "VARIABLE=value0"
  tasks:
    - debug:
        msg: "regex_replace 1: {{ device_name | regex_replace('^(.*[\\=/])') }}"
    - debug:
        msg: "regex_replace 2: {{ device_name | regex_replace('.*=') }}"
    - debug:
        msg: "split: {{ device_name.split('=')[1] }}"


> ansible-playbook test.yml | grep msg
    "msg": "regex_replace 1: value0"
    "msg": "regex_replace 2: value0"
    "msg": "split: value0"