Yes ! There More Than One Way To Do It, but Everything Is Different. a* -> means zero character 'a' or more. a+? -> means one character 'a' or more and the '?' is for none greedy (the smaller match of your regexp). That not the same as (a+)? which is optional here (because of '?').
I hope I am clear enough and that enlight you.