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