import re
REPLACEMENTS = dict([('max.' , ' maximum '),
('inkl.' , ' inklusive '),
('z.b.' , ' zum beispiel '),
('ggf.', ' gegebenfalls '),
('ca.' , ' circa ')])
sample_input_text = "Hallo, ggf ggf. max z.b. alpha z.b beta ca. 25 cm ca inkl. inkl. inkl"
joined = r'\b(?:' + '|'.join(map(re.escape, REPLACEMENTS.keys())) + r')(?!\B\w)'
print(re.findall(joined, sample_input_text))
# >> ['ggf ', 'ggf.', 'max ', 'z.b.', 'z.b ', 'inkl.', 'inkl.']
pattern = re.compile(joined)
output_text = pattern.sub(lambda m: REPLACEMENTS.get(m.group()), sample_input_text)
print(output_text)
# >> 'Hallo, gegebenfalls zum beispiel alpha beta ca. 25 cm ca inklusive inklusive inkl'
# "Hallo, ggf gegebenfalls max zum beispiel alpha z.b beta circa 25 cm ca inklusive inklusive inkl"`
aW1wb3J0IHJlClJFUExBQ0VNRU5UUyA9IGRpY3QoWygnbWF4LicgLCAnIG1heGltdW0gJyksCiAgICAgICAgICAgICAgICAgICAgICgnaW5rbC4nICwgJyBpbmtsdXNpdmUgJyksCiAgICAgICAgICAgICAgICAgICAgICgnei5iLicgLCAnIHp1bSBiZWlzcGllbCAnKSwKICAgICAgICAgICAgICAgICAgICAgKCdnZ2YuJywgJyBnZWdlYmVuZmFsbHMgJyksCiAgICAgICAgICAgICAgICAgICAgICgnY2EuJyAsICcgY2lyY2EgJyldKQoKc2FtcGxlX2lucHV0X3RleHQgPSAiSGFsbG8sIGdnZiBnZ2YuIG1heCB6LmIuIGFscGhhIHouYiBiZXRhIGNhLiAyNSBjbSBjYSBpbmtsLiBpbmtsLiBpbmtsIgpqb2luZWQgPSByJ1xiKD86JyArICd8Jy5qb2luKG1hcChyZS5lc2NhcGUsIFJFUExBQ0VNRU5UUy5rZXlzKCkpKSArIHInKSg/IVxCXHcpJwpwcmludChyZS5maW5kYWxsKGpvaW5lZCwgc2FtcGxlX2lucHV0X3RleHQpKQojID4+IFsnZ2dmICcsICdnZ2YuJywgJ21heCAnLCAnei5iLicsICd6LmIgJywgJ2lua2wuJywgJ2lua2wuJ10KcGF0dGVybiA9IHJlLmNvbXBpbGUoam9pbmVkKQpvdXRwdXRfdGV4dCA9IHBhdHRlcm4uc3ViKGxhbWJkYSBtOiBSRVBMQUNFTUVOVFMuZ2V0KG0uZ3JvdXAoKSksIHNhbXBsZV9pbnB1dF90ZXh0KQpwcmludChvdXRwdXRfdGV4dCkKIyA+PiAnSGFsbG8sICBnZWdlYmVuZmFsbHMgIHp1bSBiZWlzcGllbCAgYWxwaGEgYmV0YSBjYS4gMjUgY20gY2EgIGlua2x1c2l2ZSAgIGlua2x1c2l2ZSAgaW5rbCcKIyAiSGFsbG8sIGdnZiAgZ2VnZWJlbmZhbGxzIG1heCB6dW0gYmVpc3BpZWwgYWxwaGEgei5iIGJldGEgY2lyY2EgMjUgY20gY2EgaW5rbHVzaXZlIGlua2x1c2l2ZSBpbmtsImA=