Regex Powershell正则表达式,用于将数字替换为可变长度的字符串
我有以下字符串Regex Powershell正则表达式,用于将数字替换为可变长度的字符串,regex,powershell,replace,expression,Regex,Powershell,Replace,Expression,我有以下字符串 $FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV' 我想把大括号里的数字换成一串问号,n个字符长 例如,我希望它返回'blah_???blah_???-??.CSV' 到目前为止,我已经有了这个,但似乎无法让替换中的“扩展”正常工作 [regex]::Replace($FileNamePattern,'{(\d+)}','"?"*$1') 任何帮助都将不胜感激 Matthew您需要在回调方法中处理匹配: $callback
$FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV'
我想把大括号里的数字换成一串问号,n个字符长
例如,我希望它返回'blah_???blah_???-??.CSV'
到目前为止,我已经有了这个,但似乎无法让替换中的“扩展”正常工作
[regex]::Replace($FileNamePattern,'{(\d+)}','"?"*$1')
任何帮助都将不胜感激
Matthew您需要在回调方法中处理匹配:
$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重复该?
尝试将正则表达式的大括号反斜杠。