import re
pattern = r"(?i)\b(\d{1,2})?(\d{4})(\d{4})\b|\b\d+\s+(?:M[ML]|cm|%)"
s = ("0.9% SODIUM CHLORIDE 8290306544 FLUSH 0.9 % SYRINGE 10 ML\n"
"0.9% SODIUM CHLORIDE 8290-3071-44 FLUSH 0.9 % SYRINGE 10 MM\n"
"0.9% SODIUM CHLORIDE 290306544 FLUSH 0.9 % SYRINGE 10 cm\n")
def replacement(m):
if m.group(1):
nrs = "-".join(m.groups())
return "0" + nrs if len(m.group(1)) == 1 else nrs
return re.sub(r"\s+", "", m.group())
print(re.sub(pattern, replacement, s))
aW1wb3J0IHJlCgpwYXR0ZXJuID0gciIoP2kpXGIoXGR7MSwyfSk/KFxkezR9KShcZHs0fSlcYnxcYlxkK1xzKyg/Ok1bTUxdfGNtfCUpIgoKcyA9ICgiMC45JSBTT0RJVU0gQ0hMT1JJREUgODI5MDMwNjU0NCBGTFVTSCAwLjkgJSBTWVJJTkdFIDEwIE1MXG4iCiAgICAgIjAuOSUgU09ESVVNIENITE9SSURFIDgyOTAtMzA3MS00NCBGTFVTSCAwLjkgJSBTWVJJTkdFIDEwIE1NXG4iCiAgICAgIjAuOSUgU09ESVVNIENITE9SSURFIDI5MDMwNjU0NCBGTFVTSCAwLjkgJSBTWVJJTkdFIDEwIGNtXG4iKQoKCmRlZiByZXBsYWNlbWVudChtKToKICAgIGlmIG0uZ3JvdXAoMSk6CiAgICAgICAgbnJzID0gIi0iLmpvaW4obS5ncm91cHMoKSkKICAgICAgICByZXR1cm4gIjAiICsgbnJzIGlmIGxlbihtLmdyb3VwKDEpKSA9PSAxIGVsc2UgbnJzCiAgICByZXR1cm4gcmUuc3ViKHIiXHMrIiwgIiIsIG0uZ3JvdXAoKSkKCnByaW50KHJlLnN1YihwYXR0ZXJuLCByZXBsYWNlbWVudCwgcykpCg==