YANRQ (yet another regex question)

Mats Kindahl matkin at iar.se
Fri Mar 15 04:51:02 EST 2002


Mats Kindahl <matkin at iar.se> writes:

> Michael George Lerner <mlerner at asteroids.gpcc.itd.umich.edu> writes:
> 
> > I wanted to match this:
> > 
> > (?P<foo>foo    | foo   |  foo  |   foo |    foo)
> > 
> > without typing in all of the different combinations of 'foo' and spaces.
> > 
> > (Tim kindly pointed out the typos in the above, which I've corrected)
> > 
> > Mats Kindahl <matkin at iar.se> wrote:
> > 
> > > Depending on the definition of easy, this is the alternative I would
> > > use. 
> > 
> > > 	r = re.compile(r'(?P<foo>(?=.{7}) *foo *)')
> > > 	
> > > Of course, your milage may wary.
> > 
> > Doesn't quite work for me:
> > 
> > >>> import re
> > >>> r = re.compile(r'(?P<foo>(?=.{7}) *foo *)')
> > >>> s = r.match('foo         ').groupdict()['foo']
> > >>> s
> > 'foo         '
> > >>> len(s)
> > 12
> > >>> 
> > 
> > and I only want to match things that are seven characters long here.
> 
> That's what I get for not reading the manual... :/
> 
> Of course it should be

Bad style to follow up to one self, but... 
 
     r = re.compile(r'(?P<foo>(?=.{7}$) *foo *$)')
                                     ^        ^
                                     !        !
            notice missing dollars --+--------+

-- 
Mats Kindahl, IAR Systems, Sweden

Any opinions expressed are my own, not my company's.



More information about the Python-list mailing list