Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Powershell正则表达式,用于将数字替换为可变长度的字符串_Regex_Powershell_Replace_Expression - Fatal编程技术网

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重复该


尝试将正则表达式的大括号反斜杠。