Virtual Buddha wrote: > Hello all, > > I am having some difficulties with the non-capturing grouping in > python regular expression module. > > Even the code from the online documentation (http://docs.python.org/ > howto/regex.html#non-capturing-and-named-groups) does not seem to > work. > > As per the docs given in the link above this should happen (text > copied from the page): > >>>> m = re.match("([abc])+", "abc") >>>> m.groups() > ('c',) >>>> m = re.match("(?:[abc])+", "abc") >>>> m.groups() > () > > BUT, this is what I get: > >>>> m = re.match("([abc])+", "abc") >>>> m.group() > 'abc' >>>> m = re.match("(?:[abc])+", "abc") >>>> m.group() > 'abc' > > I am using python 2.6 on opensuse 11.1. Any one know what I might be > doing wrong? Or is this a bug?
group != groups match.group() or match.group(0) gives you a special group that comprises the whole match. Regular capturing groups start at index 1, and only those are returned by match.groups(): >> re.match("(?:[abc])+", "abc").group() # one group 'abc' >>> re.match("(?:[abc])+", "abc").groups() # all capturing groups () Peter -- http://mail.python.org/mailman/listinfo/python-list