Front page | perl.perl5.porters |
Postings from October 2003
From: Jeff 'japhy' Pinyan
October 29, 2003 14:48
Message ID: Pine.LNX.firstname.lastname@example.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 email@example.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. ]