How do I get to *all* of the groups of an re search?

P at draigBrady.com P at draigBrady.com
Fri Jan 10 16:29:48 CET 2003


Cameron Laird wrote:
> I'm clumsy with REs--I don't immediately see how to achieve
> your desired result.  I can quickly observe that
>   import re
> 
>   text = 'foo foo1 foo2 bar bar1 bar2 bar3'
> 
>   test_re = re.compile('([a-z]+)(( \\1[0-9]+)+)')
> 
>   print test_re.findall(text) 
> yields
>   [('foo', ' foo1 foo2', ' foo2'), ('bar', ' bar1 bar2 bar3', ' bar3')]
> One of us will probably get an RE that properly listifies these
> within the next day ...

No need to do everything in the RE.

1. test_re = re.compile('([a-z]+)((?: \\1[0-9]+)+)')
2. just .split() the resultant ' foo1 foo2' etc.

Pádraig.





More information about the Python-list mailing list