i think a counterexample for this regex will be
don't()mul(2,2)don't()mul(3,3)do()
your non-greedy regex will only match and remove the second part while you need to match and remove starting from the first don't(). at least this what i see on my input