re.match -- not greedy?

EXI-Andrews, Jack Jack.Andrews at boeing.com
Sun Nov 19 18:26:29 EST 2006


the '*' and '+' don't seem to be greedy.. they will consume less in
order to match a string:

>>> import re;re.match('(a+)(ab)','aaab').groups()
('aa', 'ab')

this is the sort of behaviour i'd expect from 
   '(a+?)(ab)'

a+ should greedily consume a's at the expense of the string not matching

in real life, i am trying to match #defines:

>>> re.match( '#define ([A-Za-z0-9_]+)([^(])', '#define
abc(d)').groups()
('ab', 'c')

i want this example to fail because the first character after a string
of letters is a '('
i want to match only #defines without parameters.

so what's the definition of greedy?

(pls copy me on responses)

ta,


jack



More information about the Python-list mailing list