What makes me wonder is that 

* why `[ab]*` doesn't repeat the matched part, but repeat `[ab]`. In other words, why it is not the same as either `a*`, or `b*`?
* why `([ab])\1` repeat the matched part, but not repeat `[ab]`. In other words, why it can only match `aa` and `bb`, but not `ab` and `ba`?

Is it because the priority of `()` is lower than `[]`, while the priority of `*` is higher than `[]`? I wonder ift thinking of these as operators might not be appropriate. Thanks.