R, 121 106 90 bytes
function(s,a=strsplit)cat(rep(el(a(gsub("\\d","",s),"")),pmax(el(a(s,"\\D")),"1")),sep="") Saved 15 bytes by realising that rep() will coerce to numeric. Saved another 16 thanks to Giuseppe, mainly from the use of pmax to replace empty strings with 1
function(s) { x <- el(strsplit(s,"\\D")) # Split the string on anything that is not a digit... x <- pmax(x, "1") # ... and replace any empty strings with 1. This gets us the numbers of repeats y <- gsub("\\d","",s) # Remove all digits from the original string... y <- el(strsplit(y)) # ... and split into individual units. This gets us the symbols to repeat z <- rep(y, x) # Carry outImplement the required numbers of repeats. x is coerced to numeric cat(z, sep = "") # Print without separators }