Cómo RegEx Reemplazar grupos nombrados

Necesito usar RegEx.Replace para reemplazar solo ciertos grupos nombrados en mi cadena de entrada.

Así que podría tener un patrón como:

"^(?<NoReplace>.+)(?<FirstPeriod>(\d{2})|CM|RM|PM|CN|RN){1}(?<LastPeriod>(\d{2})|CM|RM|PM|CN|RN){1}((#(?<NumberFormat>[#,\.\+\-%0]+))*)$"

Tokens como CM, RM están siendo reemplazados usando Regex.Replace con un MatchEvaluator. Sin embargo, esto solo debería ser reemplazar los caracteres en los grupos FirstPeriod y LastPeriod.

Ejemplo de entrada:"FIELDCNS 01CM"

Salida deseada:"FIELDCNS 0104"

Salida incorrecta:"FIELD**04**S 0104"

¿Es esto posible o es mejor que simplemente saque las piezas que quiero reemplazar y vuelva a ensamblar después?