[英]I am trying to extract a substring using regex_replace command . I want to extract “SWIFTInward” here
我在 Ansible 中嘗試了以下代碼
---
- hosts: windows
strategy: linear
vars:
war_file_path: F:\\Install\\IIBProjects\\DE\\WAR\\DE_SWIFTInward-202010.0.0.war
tasks:
- name: Get properties folder path for windows
set_fact:
endpointDetails: "{{ item | win_basename | regex_replace('\\\\(?:(?!\\\\).)*$', '') }}"
with_items:
- "{{ war_file_path }}"
register: war_file_name
when: ansible_os_family == "Windows"
期望輸出: SWIFTInward
我得到的錯誤輸出: DE_SWIFTInward-202010.0.0.war
win_basename
返回沒有目錄詳細信息的文件名。 因此,您的正則表達式與它不匹配,因為它在開始時需要一個\\
。
你需要
endpointDetails: "{{ item | win_basename | regex_replace('^[^_]*_([^_-]+).*', '\\1') }}"
查看正則表達式演示
或者,將regex_search
與簡單的_([^_-]+)-
regex 一起使用:
endpointDetails: "{{ item | win_basename | regex_search('(?<=_)[^_-]+') }}"
細節
^[^_]*_([^_-]+).*
:
^
- 字符串的開始[^_]*
- 除_
以外的零個或多個字符_
- 一個_
字符([^_-]+)
- 第 1 組 ( \\1
):除_
和-
之外的一個或多個字符.*
- 字符串的其余部分。(?<=_)[^_-]+
:
(?<=_)
- 字符串中緊跟在_
前面的位置[^_-]+
- 除_
和-
之外的一個或多個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.