我必須從不包括軟鏈接映射的字串串列中提取路徑。
示例串列:
list1:
- 'lrwxrwxrwx 1 usr grp 18 Nov 21 19:53 /path/dummy_link -> /some/file'
- '-rw-r--r-- 1 usr grp 0 Nov 21 17:50 /path/file1.txt'
- 'drwxr-xr-x 1 usr grp 4096 Nov 21 17:51 /path/dir1'
我正在嘗試map和regex_replace如下:
- debug:
msg: "{{ list1 | map('regex_replace',regxp,bckref) | list }}"
vars:
regxp: '^. (/path/. )(.*?)$'
bckref: '\1'
我得到的結果是:
"msg": [
"/path/dummy_link -> /some/file",
"/path/file1.txt",
"/path/dir1"
]
預期的輸出是:
"msg": [
"/path/dummy_link",
"/path/file1.txt",
"/path/dir1"
]
什么可以regex擺脫 -> /some/file不會出現在所有行中的子字串 ?
uj5u.com熱心網友回復:
您可以使用
{{ list1 | map('regex_replace','^. (/path/\\S ).*','\\1') | list }}
或者,使用regex_search:
{{ list1 | map('regex_search','/path/\\S ') | list }}
在^. (/path/\S ).*正則運算式匹配
^- 字串的開始.- 除換行符以外的一個或多個字符,盡可能多(/path/\S )- 第 1 組:/path/一個或多個非空白字符.*- 除換行符以外的零個或多個字符,盡可能多。
在\1與第1組值替換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362419.html
