I am running into an error where I am concatenating strings together to obtain the field I want replaced.
Below is an example of what my script is doing:
1st, missing the point, answer replaced...
When concatenate '$1'
and '6Q'
(before being passed to the regex engine) you get $16Q
and there is no 16th capture to replace.
To avoid this, use named groups in the match ((?<name>)
) and ${name}
in the replacement string.
See the documentation, and note:
If number does not specify a valid capturing group defined in the regular expression pattern,
$number
is interpreted as a literal character sequence that is used to replace each match.
You can also try using named capture groups:
$rx = '(?i)(?<Beg>.*)\$\(STRINGTOREPLACE\)(?<End>.*)'
$texttoreplacewith='${Beg}6Q${End}'
$x = "abc`$(stringtoreplace)xyz"
[regex]::Replace($x, $rx, $texttoreplacewith)