re question

attn.steven.kuo at attn.steven.kuo at
Thu Nov 2 03:38:22 CET 2006

Schüle Daniel wrote:


> I am trying to construct a case where a greedy and
> non greedy operation produce different result.
> I dont see the difference between 'a??b' and 'a?b'
> As far I understand is that ? will first try to match a
> (it's greedy) and only if it fails then it step back
> and lets a unmatched. The other doesn't match a at first,
> only if the pattern fails to match it steps back and match a.
> But don't they do eventually the same thing?
> Can someone provide an example where 2 patterns yield
> different results.

Perhaps this sheds some light
on the matter:

>>> import re
>>> string = "aaaba"

>>> one =  re.findall(r'a?b?', string)
>>> two =  re.findall(r'a??b?', string)

>>> print one, two


['a', 'a', 'ab', 'a', ''] ['', '', '', 'b', '', '']

Hope this helps,

More information about the Python-list mailing list