import re
contents = '''
var cool_spirit_animals = {
'Abel': 'unicorn',
'Bob': 'lion'
};
var spirit_plants = {
'Cain': 'venus fly trap'
};
var stupid_spirit_animals = {
'Dan': 'lamprey'
};
var spirit_vampires = {
'Emily': 'Buffy',
'Fred': 'Dracula'
};
'''
def repl(m):
return re.sub(r"'(\w+)':", r"'\1 Smith':", m.group())
my_regex = r'spirit_animals\s*=\s*\{[^}]*(?:}(?!;(?:$|\n))[^}]*)*};(?:$|\n)'
print re.sub(my_regex, repl, contents)
aW1wb3J0IHJlCgpjb250ZW50cyA9ICcnJwogIHZhciBjb29sX3NwaXJpdF9hbmltYWxzID0gewogICAgJ0FiZWwnOiAndW5pY29ybicsCiAgICAnQm9iJzogJ2xpb24nCiAgfTsKCiAgdmFyIHNwaXJpdF9wbGFudHMgPSB7CiAgICAnQ2Fpbic6ICd2ZW51cyBmbHkgdHJhcCcKICB9OwoKICB2YXIgc3R1cGlkX3NwaXJpdF9hbmltYWxzID0gewogICAgJ0Rhbic6ICdsYW1wcmV5JwogIH07CgogIHZhciBzcGlyaXRfdmFtcGlyZXMgPSB7CiAgICAnRW1pbHknOiAnQnVmZnknLAogICAgJ0ZyZWQnOiAnRHJhY3VsYScKICB9OwonJycKZGVmIHJlcGwobSk6CglyZXR1cm4gcmUuc3ViKHIiJyhcdyspJzoiLCByIidcMSBTbWl0aCc6IiwgbS5ncm91cCgpKQoJCm15X3JlZ2V4ID0gcidzcGlyaXRfYW5pbWFsc1xzKj1ccypce1tefV0qKD86fSg/ITsoPzokfFxuKSlbXn1dKikqfTsoPzokfFxuKScKcHJpbnQgcmUuc3ViKG15X3JlZ2V4LCByZXBsLCBjb250ZW50cyk=