Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Re: multiple matches with regexp

by sandfly (Beadle)
on Oct 10, 2003 at 21:08 UTC ( [id://298419]=note: print w/replies, xml ) Need Help??


in reply to Re: multiple matches with regexp
in thread multiple matches with regexp

This is clever, and extended my understanding of the RE engine (++), but is it guaranteed to work?

I got interested in why a negative look-ahead was required, and found that negative and positive failing look-behinds work too, but a simple mis-match doesn't, and neither does a failing zero-length positive look-ahead: (?=x). For example, m/(aa)(?{push @a, $1})x/ does not work. Presumably the regex optimiser sees that there is no 'x' in 'aaaa', so it doesn't bother with the step-wise attempts to match the 'a's.

Is it possible a future regex engine will realise that mis-match is inevitable because (?!) will always mis-match, and break this code?

Replies are listed 'Best First'.
Re: Re: Re: multiple matches with regexp
by CombatSquirrel (Hermit) on Oct 10, 2003 at 22:04 UTC
    A too smart RegEx engine would already break the (?{}) part of the code, which is evaluated every time the engine runs over it. The main problem is that (?{}) is an experimental feature which may be changed or deleted in future Perl versions. Still, AFAIK, it is considered useful for some RegExes (the above one is fairly standard) which will hopefully prevent major changes in the syntax. And don't forget we have Perl 6 coming up ;-).
    Cheers,
    CombatSquirrel.
    Entropy is the tendency of everything going to hell.
      To avoid experimental features one may choose the following:
      $regexp="a{2}"; $_="aaaa"; push @a , $1 while m/(?=($regexp))./g; print join ( "-", @a ) . "\n";
      Greetings

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://298419]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-04-24 00:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found