2016-07-13 74 views
2

的字符串替換一個數字我有以下字符串Powershell的正則表達式與可變長度

$FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV' 

,我想用問號的字符串來替換在大括號中的數字,n個字符長

,因爲我想它返回'blah_????_?????_blah_????-??.CSV'

我有這到目前爲止,但似乎無法得到的更換工作

的「擴張」的例子0
[regex]::Replace($FileNamePattern,'{(\d+)}','"?"*$1') 

任何幫助將不勝感激!

馬修

+0

嘗試反斜槓正則表達式的大括號。 – Bentoy13

回答

2

你需要做的回調方法裏面比賽的處理:

$callback = { param($match) "?" * [int]$match.Groups[1].Value } 
$FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV' 
$rex = [regex]'{(\d+)}' 
$rex.Replace($FileNamePattern, $callback) 

{(\d+)}之間匹配{}和捕獲1+數字的正則表達式。子匹配在回調中被解析爲整數(參見[int]$match.Groups[1].Value),然後?"?" * [int]$match.Groups[1].Value重複該次數。

enter image description here