name = 'Iscador M 0,0001 mg, Injektionslösung, anthroposophisches Arzneimittel' #name = 'Helixor A 0,01 mg Injektionslösung, anthrop. Arzneimittel' #name = 'Ondansetron-Teva, 4mg, Filmtabletten' parts = name.split(/\s*,(?!\d|[^(]+\))\s*/u) base = parts.shift ## some names have dosage data before the galenic form # ex. 'Ondansetron-Teva, 4mg, Filmtabletten' if /[\d\s][m]?[glL]\b/.match(parts.first) base << ', ' << parts.shift unless parts.empty? end descr = parts.join(', ') unless parts.empty? parts = descr.split(/\s*,(?!\d|[^(]+\))\s*/u) unless gal = parts.first[/[^\d]{3,}/] gal = parts.last[/[^\d]{3,}/] end gal.strip! if gal print "name(Column C) = '", name, "'\n" print "base(:name_base, Product name) = '", base, "'\n" print "descr(:name_descr, Description) = '", descr, "'\n" print "galenic_form = '", gal, "'\n" puts name = 'Helixor A 0,01 mg Injektionslösung, anthrop. Arzneimittel' #name = 'Ondansetron-Teva, 4mg, Filmtabletten' parts = name.split(/\s*,(?!\d|[^(]+\))\s*/u) base = parts.shift ## some names have dosage data before the galenic form # ex. 'Ondansetron-Teva, 4mg, Filmtabletten' if /[\d\s][m]?[glL]\b/.match(parts.first) base << ', ' << parts.shift unless parts.empty? end descr = parts.join(', ') unless parts.empty? parts = descr.split(/\s*,(?!\d|[^(]+\))\s*/u) unless gal = parts.first[/[^\d]{3,}/] gal = parts.last[/[^\d]{3,}/] end gal.strip! if gal print "name(Column C) = '", name, "'\n" print "base(:name_base, Product name) = '", base, "'\n" print "descr(:name_descr, Description) = '", descr, "'\n" print "galenic_form = '", gal, "'\n" puts name = 'Ondansetron-Teva, 4mg, Filmtabletten' parts = name.split(/\s*,(?!\d|[^(]+\))\s*/u) base = parts.shift ## some names have dosage data before the galenic form # ex. 'Ondansetron-Teva, 4mg, Filmtabletten' if /[\d\s][m]?[glL]\b/.match(parts.first) base << ', ' << parts.shift unless parts.empty? end descr = parts.join(', ') unless parts.empty? parts = descr.split(/\s*,(?!\d|[^(]+\))\s*/u) unless gal = parts.first[/[^\d]{3,}/] gal = parts.last[/[^\d]{3,}/] end gal.strip! if gal print "name(Column C) = '", name, "'\n" print "base(:name_base, Product name) = '", base, "'\n" print "descr(:name_descr, Description) = '", descr, "'\n" print "galenic_form = '", gal, "'\n"