in reply to A regex question...

s/((.){5})(?!$)/$1-/g; s/((.){17})\-/$1\<br\>/;

artist

Replies are listed 'Best First'.
Re: Re: A regex question...
by nacka (Friar) on May 06, 2003 at 20:48 UTC
    Friedl has a variant of this; 'commafying a number'.
    I did a paraphrase of artist's solution, influenced by Friedl, but with a twist for the <br> insert. And then a cmpthese.
    nacka: s/(\d)(?=(\d{5})+(?!\d))/${1}-/g; substr($_, 17, 1, '<br>'); artist: s/((.){5})(?!$)/$1-/g; s/((.){17})\-/$1\<br\>/; thezip: s/(\d{5}) (\d{5}) (\d{5}) (\d{5}) (\d{5}) (\d{5}) /$1-$2-$3<br>$4-$5-$6/x; nacka/artist hybrid: s/(\d)(?=(\d{5})+(?!\d))/$1-/g; s/((.){17})\-/$1\<br\>/; artist/nacka hybrid: s/((.){5})(?!$)/$1-/g; substr($_, 17, 1, '<br>');
    And the Benchmark:
    Rate artist thezip artist/nacka nacka/artist + nacka artist 13175231/s -- -8% -9% -14% + -14% thezip 14347202/s 9% -- -1% -6% + -7% artist/nacka 14534884/s 10% 1% -- -5% + -6% nacka/artist 15313936/s 16% 7% 5% -- + -0% nacka 15384615/s 17% 7% 6% 0% + --
    All of the above rate numbers are probably within the error margin.

    I declare thezip's solution the most readable, and hence the winning solution.