develooper Front page | perl.perl5.porters | Postings from October 2003

Re: /(\w|(?{++$n}))*/

Thread Previous | Thread Next
From:
Jeff 'japhy' Pinyan
Date:
October 29, 2003 14:48
Subject:
Re: /(\w|(?{++$n}))*/
Message ID:
Pine.LNX.4.44.0310291747030.12328-100000@perlmonk.org
On Oct 29, Mark Jason Dominus said:

>> >>   "abc" =~ /(b?|[ac])*/;
>> >
>> >Why should it match 'abc'?  The first alternative alternative b? is
>> >taken before the seoncd alternative [ac]* .
>> >
>> >The * operator has special code in it to prevent it from going into an
>> >infinite loop when its argument has matched an empty string, so the *
>> >loop is exited after the first pass.
>>
>> Hrm.  I guess I was confusing that with /\w??/g.
>
>If it didn't have that logic in it, it would go into an infinite loop
>in this example, since it would match an infinite sequence of b?'s at
>the start of the target string.

I was expecting it to have the "can't match two zero-lengths in a row"
logic, and so the b? would fail, and it would try the alternative, [ac].

-- 
Jeff "japhy" Pinyan      japhy@pobox.com      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About