Reemplazar con re.sub DESPUÉS de un patrón coincidente

Tengo una sustitución de expresiones regulares que no puedo entender.

s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE) result = re.sub(s2, "newData", inputData) 

El problema es que también reemplaza la parte “DATA_ARRAY”. Necesito reemplazar solo el texto que viene DESPUÉS de la parte “DATA_ARRAY”. He colocado los datos en un grupo en el s2 (.*?};) Pero no puedo averiguar cómo usar la función re.sub para reemplazar solo la parte requerida.

Saludos

 s2 = re.compile("^(DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE) result = re.sub(s2, r"\1newData", inputData) 

Puede capturar el first group y reemplazarlo a través de la backreferencing

o simplemente

 s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE) result = re.sub(s2, "DATA_ARRAY newData", inputData) 
 s2 = re.compile("(?<=^DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE) result = re.sub(s2, "newData", inputData) 

Puede simplemente tener una aserción detrás de la mirada (?<=___) .