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

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

Thread Previous | Thread Next
Jeff 'japhy' Pinyan
October 29, 2003 14:48
Re: /(\w|(?{++$n}))*/
Message ID:
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
RPI Acacia brother #734
<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 Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About