el problema es la expresion, tienes que usar repeticion
non-greedy.
greedy significa codicioso, lo que significa que la repeticion selecciona todos los valores posibles. con non-greedy es al reverso, selecciona la menor cantidad posible.
Código:
// cambia;
(.)*
// por;
(.*?)