我有以下字符串
$FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV'
我希望用一串问号替换花括号中的数字,n个字符长
作为一个例子,我希望它返回'blah_????_?????_blah_????-??.CSV'
到目前为止,我有这个,但似乎无法实现“扩张”。在替换工作
[regex]::Replace($FileNamePattern,'{(\d+)}','"?"*$1')
非常感谢任何帮助!
马修
答案 0 :(得分: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
次。