MATLAB: How to parse this string

string

I would like to parse the following string
a='4:256404:val=9.999e+20:val=1.82:val=2.15:val=2.66:val=2.18:val=1.81';
to obtain the vector x = [9.999e+20 1.82 2.15 2.66 2.18 1.81]. In reality the string is 5308 characters long and there are very many of them. I believe I can't parse this with regexp because I want to separate with a defined sequence ':val='. I could do the following, but is there a cleaner way?
matchThisString = ':val=';
iBreak = findstr(a, matchThisString);
x = NaN*ones(1, (length(iBreak)-1));
for ii = 1:(length(iBreak)-1)
iStart = iBreak(ii) + length(matchThisString);
iEnd = iBreak(ii + 1) - 1;
x(ii) = str2num(a(iStart:iEnd));
end

Best Answer

a='9.999e+20:val=1.82:val=2.15:val=2.66:val=2.18:val=1.81'
b=str2double(regexp(a,':val=','split'))