Difference between $(a|b)^\ast$ and $a^\ast b^\ast$?

What is the difference between $(a|b)^\ast$ and $a^\ast b^\ast$? Can you show more examples of Kleene star and patterns and explain a little bit? I've searched so many sites in Google, but it returns very little results on this topic. I would be very grateful.

-
What is $(a\mid b)$? –  JavaMan Feb 2 '12 at 3:41
@JavaMan: a, b or ab. Right? –  hey Feb 2 '12 at 3:42

Assuming that $|$ refers to an "or" selection (so the character can be either an $a$ or a $b$, then $(a|b)^*$ is all strings composed of the characters $a$ and/or $b$, including the empty string. On the other hand, $a^*b^*$ refers to all strings composed of the characters $a$ and/or $b$ which has all $a$'s preceding all $b$'s, again including the empty string.

For instance, $ababbbabab$ would be a member of $(a|b)^*$ but not $a^*b^*$, whereas $aaabbbbb$ would be a member of both.

-
Could you please give me a few more examples, I would really be grateful. –  hey Feb 2 '12 at 3:48
Unfortunately I don't know what kind of examples you want. If you do a search for Kleene star examples there are references all over the place. One in particular is csee.umbc.edu/portal/help/theory/lang_def.shtml. The Regular Language section contains some good examples/patterns. –  Kurtis Zimmerman Feb 2 '12 at 3:50
Thanks, those example will be enough, I think I almost got it now. –  hey Feb 2 '12 at 4:01