Ben Wing wrote: > the only strangeness here is the numbering of groups starting at 1, and > making 0 be a special case. this isn't any more (or less) of a problem > for the indexing form than it is for m.group(), and it's well known from > various other languages. we could always consider making groups start > at 0 for python 3000, but this seems to me like a gratuitous > incompatibility with the rest of the world.
As Greg pointed out, this is just a special case of the fact that subgroups can be nested with the ordering governed by the location of the left parenthesis: .>>> import re .>>> m = re.match("a(b(c))", "abc") .>>> m.group(0) 'abc' .>>> m.group(1) 'bc' .>>> m.group(2) 'c' That said, I like the definitions in your last message: len(m) == 1 + len(m.groups()) m[:] == [m.group(0)] + m.groups() all(m[i] == m.group(i) for i in range(len(m))) all(m[k] == m.group(k) for k in m.groupdict().keys()) The internally inconsistent* m.group() and m.groups() methods could even be slated for removal in Py3k (replaced by the subscript operations). Cheers, Nick. *The inconsistency being that group() considers the whole match to be group 0, while groups() does not. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com