[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

.*? still greedy (perl,python)?



Hi,
I noticed that .*? in perl and phython, if used at the beginning
of an unanchored (without ^) regular expression still behaves half-greedy:

perl:
  "hello" =~ /(.*?)l/;
  print "\$1 = $1\n";

python:
  import re
  r=re.search("(.*?)l","hello")
  print "$1=",r.group(1)

In both cases, "he" is printed, while the real minimal match obviously
would result in an emtpy $1 or r.group(1). This is the behavour
if I put the (.*?) at the end (ex.: /h(.*?)/)

Is this a bug in perl/python itself, or maybe in the documentation?

Or am I misunderstanding something?

Should I file bugs?

(notice that, when replacing .*? with .*, both perl and python find
"hel", so it seems the greedyness to the right-hand-side is controled
OK by the ?, but not to the left-hand-side).

(Yes, I know I can `fix' it by adding .* to the beginning of the reg-expr).

$ dpkg -l python\* perl\*|grep ^i
ii  python-base    1.5.1-3        An interactive object-oriented scripting lan
ii  python-doc     1.5.2p1-4      Documentation for the scripting language Pyt
ii  python-gtk     0.6.5-1        GTK support module for Python.
ii  python-net     1.5.1-3        TCP/IP and various Internet support modules 
ii  python-tk      1.5.1-3        Tk support module for Python (Tkinter).
ii  perl-5.004     5.004.05-6     Larry Wall's Practical Extracting and Report
ii  perl-5.004-bas 5.004.05-6     The Pathologically Eclectic Rubbish Lister
ii  perl-5.004-sui 5.004.05-6     Runs setuid Perl scripts.
ii  perl-5.005     5.005.03-7.1   Larry Wall's Practical Extracting and Report
ii  perl-5.005-bas 5.005.03-7.1   The Pathologically Eclectic Rubbish Lister
ii  perl-5.005-doc 5.005.03-6     Man pages and pod docs for Perl
ii  perl-base      5.004.05-1.1   Fake package assuring that one of the -base 

-- 
joostje



Reply to: