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,
$numberis 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)