Regex Question
Gabriel Genellina
gagsl-py at yahoo.com.ar
Tue Jan 16 21:25:52 EST 2007
At Tuesday 16/1/2007 16:36, Bill Mill wrote:
> > py> import re
> > py> rgx = re.compile('1?')
> > py> rgx.search('a1').groups()
> > (None,)
> > py> rgx = re.compile('(1)+')
> > py> rgx.search('a1').groups()
>
>But shouldn't the ? be greedy, and thus prefer the one match to the
>zero? This is my sticking point - I've seen that plus works, and this
>just confuses me more.
Perhaps you have misunderstood what search does.
search( pattern, string[, flags])
Scan through string looking for a location where the regular
expression pattern produces a match
'1?' means 0 or 1 times '1', i.e., nothing or a single '1'.
At the start of the target string, 'a1', we have nothing, so the re
matches, and returns that occurrence. It doesnt matter that a few
characters later there is *another* match, even if it is longer; once
a match is found, the scan is done.
If you want "the longest match of all possible matches along the
string", you should use findall() instead of search().
--
Gabriel Genellina
Softlab SRL
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
More information about the Python-list
mailing list