Re: Regular Expression Non Capturing Grouping Does Not Work.

2009-06-27 Thread Virtual Buddha

> 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


Aaargh! Should have caught that myself. Sorry for wasting all your
time. Thank you Peter and Miles! (I am off to bed now. 4:10 am :)


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Regular Expression Non Capturing Grouping Does Not Work.

2009-06-27 Thread Peter Otten
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


Re: Regular Expression Non Capturing Grouping Does Not Work.

2009-06-27 Thread Miles Kaufmann

On Jun 27, 2009, at 3:28 AM, 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.

...


Notice that you are calling .group() on the match object instead  
of .groups().  Without any arguments, .group() is equivalent  
to .group(0), which means "return the entire matching string."


http://docs.python.org/library/re.html#re.MatchObject.group

-Miles

--
http://mail.python.org/mailman/listinfo/python-list