import re
num = 2
replace_with = 1110
def repl(m):
if m.group(num):
return "{}{}{}".format(m.group()[0:m.start(num)-m.span()[0]], replace_with, m.group()[m.span()[1]-m.end(num)-1:])
#print("Start: {}\nEnd: {}\nMatch Span :{}\ngroup: {}".format(m.start(num),m.end(num), m.span(), m.group()))
else:
return m.group()
string = 'foo42buz'
pattern = re.compile(r'(\d)(\d)buz')
print(re.sub(pattern,repl,string))
aW1wb3J0IHJlCgpudW0gPSAyCnJlcGxhY2Vfd2l0aCA9IDExMTAKCmRlZiByZXBsKG0pOgoJaWYgbS5ncm91cChudW0pOgoJCXJldHVybiAie317fXt9Ii5mb3JtYXQobS5ncm91cCgpWzA6bS5zdGFydChudW0pLW0uc3BhbigpWzBdXSwgcmVwbGFjZV93aXRoLCBtLmdyb3VwKClbbS5zcGFuKClbMV0tbS5lbmQobnVtKS0xOl0pCgkJI3ByaW50KCJTdGFydDoge31cbkVuZDoge31cbk1hdGNoIFNwYW4gOnt9XG5ncm91cDoge30iLmZvcm1hdChtLnN0YXJ0KG51bSksbS5lbmQobnVtKSwgbS5zcGFuKCksIG0uZ3JvdXAoKSkpCgllbHNlOgoJCXJldHVybiBtLmdyb3VwKCkKCnN0cmluZyA9ICdmb280MmJ1eicKcGF0dGVybiA9IHJlLmNvbXBpbGUocicoXGQpKFxkKWJ1eicpCnByaW50KHJlLnN1YihwYXR0ZXJuLHJlcGwsc3RyaW5nKSkK