gpt4 book ai didi

regex - Ansible regrex_replace 通过路径(url)修改文件名

转载 作者:行者123 更新时间:2023-12-04 08:56:18 24 4
gpt4 key购买 nike

我正在尝试使用 Ansible 中的 basename 从其路径中获取文件名后修改文件名,
我成功地从名称中删除了扩展名,但无法实现下一个目标
路径:/bin/data/xyzzz_no_db_20.9.1-82.tgz
(即:xyzzz_no_db_20.9.1-82.tgz => xyzzzz_no_db _ 20.9.1-82 => xyzzz_no_db:20.9.1-82. |1095|77 预期最终结果|7095|77
基本上,需要用 (:)(coln) 替换 (_)(underscore) 的最后一次出现,并使用下面提到的代码尝试相同,它们必须需要一些修改。
提前致谢。

- name: Modify image name
set_fact:
imagename: " {{ latest_file.path | basename | regex_replace('.tgz', '') | regex_replace('/^[^_^_]*[0-9]/',':')}}"

最佳答案

您实际上可以为此使用单个正则表达式:

(.*)_(.*)\.tgz$
替换为 \1:\2 .见 regex demo
在代码中,
- name: Modify image name
set_fact:
imagename: " {{ latest_file.path | basename | regex_replace('(.*)_(.*)\\.tgz$', '\\1:\\2') }}"
正则表达式详情
  • (.*) - 第 1 组 ( \1 ):除换行符以外的任何零个或多个字符,尽可能多的
  • _ - 下划线(未捕获,我们将在替换模式中用 : 替换它)
  • (.*) - 第 2 组 ( \2 ):除换行符以外的任何零个或多个字符,尽可能多的
  • \.tgz - .tgz子字符串(注意 . 被转义以匹配文字 . 字符)
  • $ - 字符串的结尾。
  • 关于regex - Ansible regrex_replace 通过路径(url)修改文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63816304/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com