The patsubst doesn't work because your pattern is :%
which will only match strings that start with a colon; your string doesn't start with a colon so it doesn't match, so no substitution is performed.
You can do this by splitting the string into multiple words:
b = $(firstword $(subst :, ,$(a)))