import re
def repl(m, extra_groups):
return fr"{m.group(2)} AND {m.group('mygroup')} AND {extra_groups['anothergroup']}"
supplemental_groups = {"anothergroup" : "hamspam"}
print (re.sub(r"(?P<mygroup>.*):(.*)",
lambda x, extra_groups=supplemental_groups: repl(x, extra_groups),
"foo:bar"))
aW1wb3J0IHJlCgpkZWYgcmVwbChtLCBleHRyYV9ncm91cHMpOgogICAgcmV0dXJuIGZyInttLmdyb3VwKDIpfSBBTkQge20uZ3JvdXAoJ215Z3JvdXAnKX0gQU5EIHtleHRyYV9ncm91cHNbJ2Fub3RoZXJncm91cCddfSIKCnN1cHBsZW1lbnRhbF9ncm91cHMgPSB7ImFub3RoZXJncm91cCIgOiAiaGFtc3BhbSJ9CnByaW50IChyZS5zdWIociIoP1A8bXlncm91cD4uKik6KC4qKSIsCiAgICBsYW1iZGEgeCwgZXh0cmFfZ3JvdXBzPXN1cHBsZW1lbnRhbF9ncm91cHM6IHJlcGwoeCwgZXh0cmFfZ3JvdXBzKSwKICAgICJmb286YmFyIikp