On 7 Dec 2006, at 21:47, Josiah Carlson wrote: > Alastair Houghton <[EMAIL PROTECTED]> wrote: >> On 7 Dec 2006, at 02:01, Josiah Carlson wrote: >>> Alastair Houghton <[EMAIL PROTECTED]> wrote: >>>> On 7 Dec 2006, at 01:01, Josiah Carlson wrote: >>>>> If we don't want >>>>> slicing, or if prodicing a slice would produce a semantically >>>>> questionable state, then lets not do it. >>>> >>>> ...if you return match objects from slicing, you have problems >>>> like m >>>> [::-1].groups(). *I* don't know what that should return. >>> >>> I would argue that any 'step' != 1 has no semantically correct >>> result >>> for slicing on a match object, so we shouldn't support it. >> >> OK, but even then, if you're returning a match object, how about the >> following: >> >>>>> m = re.match('(A)(B)(C)(D)(E)', 'ABCDE') >>>>> print m[0] >> ABCDE >>>>> n = m[2:5] >>>>> print list(n) >> ['B', 'C', 'D'] >>>>> print n[0] >> B >>>>> print n.group(0) >> B >> >> The problem I have with it is that it's violating the invariant that >> match objects should return the whole match in group(0). > > If we were going to go with slicing, then it would be fairly > trivial to > include the whole match range. Some portion of the underlying > structure > knows where the start of group 2 is, and knows where the end of > group 5 > is, so we can slice or otherwise use that for subsequent sliced > groups.
But then you're proposing that this thing (which looks like a tuple, when you're indexing it) should slice in a funny way. i.e. m = re.match('(A)(B)(C)(D)(E)', 'ABCDE') print m[0] ABCDE print list(m) ['ABCDE', 'A', 'B', 'C', 'D', 'E'] n = m[2:5] print list(n) ['BCD', 'B', 'C', 'D'] print len(n) 4 p = list(m)[2:5] print p ['B', 'C', 'D'] print len(p) Or are you saying that m[2:5][0] != m[2:5].group(0) but m[0] == m.group(0) ?? Either way I think that's *really* counter-intuitive. Honestly, I don't think that slicing should be supported if it's going to have to result in match objects, because I can't see a way to make them make sense. I think that's Frederik's objection also, but unlike me he doesn't feel that the slice operation should return something different (e.g. a tuple). Kind regards, Alastair. -- http://alastairs-place.net _______________________________________________ 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