I want to pass a function call(which returns a string) as a replacement string to Powershell's replace function such that each match found is replaced with a different string.
Something like -
$global_counter = 0
Function callback()
{
$global_counter += 1
return "string" + $global_counter
}
$mystring -replace "match", callback()
Python allows this through 're' module's 'sub' function which accepts a callback function as input. Looking for something similar
Perhaps you are looking for Regex.Replace Method (String, MatchEvaluator). In PowerShell a script block can be used as
MatchEvaluator
. Inside this script block$args[0]
is the current match.Output:
PowerShell does not (yet?) have support for passing a script block to the
-replace
operator. The only option here is to use[Regex]::Replace
directly: