簡體   English   中英

我正在嘗試使用 regex_replace 命令提取子字符串。 我想在這里提取“SWIFTInward”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM