in reply to regular expressions - finding repeats

Well blokhead already posted what's probably the best answer, and the one that I wanted to give, but I've got to post something. So here:

if ($String =~ join('|',map($_ x 5, qw(A B C D E)))) {}

Admittedly it takes 3-4 times as long according to benchmark... but it was so much more fun to write ;p.

-BronzeWing

Replies are listed 'Best First'.
Re: Re: regular expressions - finding repeats
by ihb (Deacon) on Feb 27, 2003 at 20:45 UTC

    Here's a little attempt to optimize this code. (Not that it's worth optimizing like this since backreferences rule, but anyway... :)) The pattern can be extended to the line below, and as a bonus you get an even uglier expression.   '(?=[A-E])(?:' . join('|',map($_ x 5, qw(A B C D E))) . ')' A side note that actually can be relevant: if you don't rebuild the pattern each time you'll save a lot. And if you use qr// or /o you'll be even happier, usually.

    ihb