Ansible如何移除字符串末尾的数字字符并将结果存入新变量
Ansible 列表字符串末尾数字移除方案
直接使用Ansible内置的正则替换过滤器即可实现需求,无需额外自定义模块或脚本,处理后的结果可直接存入新变量供后续playbook逻辑调用。
实现代码
你可以直接在playbook中通过如下逻辑定义处理后的变量:
vars: fruit: [ 'apple','orange2','grape3apple1'] tasks: - set_fact: fruit_out: "{{ fruit | map('regex_replace', '\\d$', '') | list }}"
逻辑说明
- 核心用
regex_replace过滤器做正则匹配替换:正则规则\d$只会匹配字符串末尾位置的单个数字,匹配到就替换为空字符串;末尾不是数字的字符串不会触发匹配,会原样保留,完全符合你提出的处理规则。 - 用
map过滤器把替换逻辑批量应用到原列表的每一个元素上,最后加| list是将map返回的迭代器转为标准Ansible列表格式存入变量。
结果验证
执行后打印fruit_out变量,输出和预期完全一致:
fruit_out: [ 'apple','orange','grape3apple' ]
如果你后续有需要移除末尾连续多个数字的需求,只需要把正则规则修改为
\\d+$即可,当前规则严格匹配你给出的示例,仅移除末尾1位数字。
内容的提问来源于stack exchange,提问作者EXK
相关产品推荐
相关产品推荐

