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

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

Thread Previous | Thread Next
From:
Mark Jason Dominus
Date:
October 29, 2003 14:43
Subject:
Re: /(\w|(?{++$n}))*/
Message ID:
20031029224335.25313.qmail@plover.com

> On Oct 29, Mark Jason Dominus said:
> 
> >> On Oct 29, Jeff 'japhy' Pinyan said:
> >>
> >> And somewhat related, why doesn't
> >>
> >>   "abc" =~ /(b?|[ac])*/;
> >>
> >> match 'abc'?  It matches '' (the zero b's at the beginning of the string).
> >
> >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.

Either way it wouldn't select 'abc'.

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