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))
