fork(5) download
  1. import re
  2.  
  3. contents = '''
  4. var cool_spirit_animals = {
  5. 'Abel': 'unicorn',
  6. 'Bob': 'lion'
  7. };
  8.  
  9. var spirit_plants = {
  10. 'Cain': 'venus fly trap'
  11. };
  12.  
  13. var stupid_spirit_animals = {
  14. 'Dan': 'lamprey'
  15. };
  16.  
  17. var spirit_vampires = {
  18. 'Emily': 'Buffy',
  19. 'Fred': 'Dracula'
  20. };
  21. '''
  22. def repl(m):
  23. return re.sub(r"'(\w+)':", r"'\1 Smith':", m.group())
  24.  
  25. my_regex = r'spirit_animals\s*=\s*\{[^}]*(?:}(?!;(?:$|\n))[^}]*)*};(?:$|\n)'
  26. print re.sub(my_regex, repl, contents)
Success #stdin #stdout 0.02s 9016KB
stdin
Standard input is empty
stdout
  var cool_spirit_animals = {
    'Abel Smith': 'unicorn',
    'Bob Smith': 'lion'
  };

  var spirit_plants = {
    'Cain': 'venus fly trap'
  };

  var stupid_spirit_animals = {
    'Dan Smith': 'lamprey'
  };

  var spirit_vampires = {
    'Emily': 'Buffy',
    'Fred': 'Dracula'
  };