По умолчанию +
и *
являются "жадными" - они сжигают столько символов, сколько могут. Вот почему вы получаете больше, чем хотите. Если вы добавите к ним ?
(+?
и *?
), они будут не жадными и остановятся, как только смогут.
Ваше регулярное выражение также выглядит неправильно. Это должно быть что-то вроде #attname src="[^"]*?"#
.