fork download
  1. import re
  2.  
  3. pattern = r"(?i)\b(\d{1,2})?(\d{4})(\d{4})\b|\b\d+\s+(?:M[ML]|cm|%)"
  4.  
  5. s = ("0.9% SODIUM CHLORIDE 8290306544 FLUSH 0.9 % SYRINGE 10 ML\n"
  6. "0.9% SODIUM CHLORIDE 8290-3071-44 FLUSH 0.9 % SYRINGE 10 MM\n"
  7. "0.9% SODIUM CHLORIDE 290306544 FLUSH 0.9 % SYRINGE 10 cm\n")
  8.  
  9.  
  10. def replacement(m):
  11. if m.group(1):
  12. nrs = "-".join(m.groups())
  13. return "0" + nrs if len(m.group(1)) == 1 else nrs
  14. return re.sub(r"\s+", "", m.group())
  15.  
  16. print(re.sub(pattern, replacement, s))
  17.  
Success #stdin #stdout 0.03s 9596KB
stdin
Standard input is empty
stdout
0.9% SODIUM CHLORIDE 82-9030-6544 FLUSH 0.9% SYRINGE 10ML
0.9% SODIUM CHLORIDE 8290-3071-44 FLUSH 0.9% SYRINGE 10MM
0.9% SODIUM CHLORIDE 02-9030-6544 FLUSH 0.9% SYRINGE 10cm