I'm interested about this being implemented as an iterator. I can imagine two ways this might be done:
You exhaustively generate all matches, and the iterator is just added on to have a nice interface. Often if you see an iterator interface you assume that it is only generating the return values "on demand" and not pre-computing them all.
The iterator is implemented by somehow jumping out of a regex during a match with lots of back-tracking. If this is the case, I wonder if re-entrancy would be a problem. Could the regex engine be used while this iterator object is "active?" Actually, implementing an iterator instead of a callback in this way seems highly non-trivial to me, so if this is the case, I'd be interested to see the implementation details.
Either way, I think it would be nice if the documentation made clear what was going on with respect to iterators.
I like how the interface provides a way to get the $1, $2, etc match variables.