in reply to better way to get last named capture group
$ perl -E'say "xxx" =~ s/(*MARK:a)^.|(*MARK:c).$|(*MARK:b)./$REGMARK/g +r' abc [download]
$ python -c 'import pcre2; print(pcre2.sub("(*MARK:a)^.|(*MARK:c).$|(* +MARK:b).", "$*MARK", "xxx"))' abc [download]