import re
input = "FieldA:ValueA { Field1:Value1 Field2:Value2 Field3:Value3 } FieldB:ValueB"
value = "Value1"
field = "NewField"
def evaluate(m):
return re.sub(r'(\w+):(' + re.escape(value) + r'\b)', field + ":\\2", m.group(0))
output = re.sub(r'\{[^{}]*\}', evaluate, input)
print output;
aW1wb3J0IHJlIAoKaW5wdXQgPSAiRmllbGRBOlZhbHVlQSB7IEZpZWxkMTpWYWx1ZTEgRmllbGQyOlZhbHVlMiBGaWVsZDM6VmFsdWUzIH0gRmllbGRCOlZhbHVlQiIKdmFsdWUgPSAiVmFsdWUxIgpmaWVsZCA9ICJOZXdGaWVsZCIKCmRlZiBldmFsdWF0ZShtKToKICByZXR1cm4gcmUuc3ViKHInKFx3Kyk6KCcgKyByZS5lc2NhcGUodmFsdWUpICsgcidcYiknLCBmaWVsZCArICI6XFwyIiwgbS5ncm91cCgwKSkKCm91dHB1dCA9IHJlLnN1YihyJ1x7W157fV0qXH0nLCBldmFsdWF0ZSwgaW5wdXQpCgpwcmludCBvdXRwdXQ7