in reply to Regexp: Only tr second occurance

here´s another
perl -e'$test="123.0456.0789";$test =~ s/(\.0.*)(.0)/$1/;print "$test\ +n";' ___output___ 123.0456789

a bit easyer to understand than Abigails, i think.

Replies are listed 'Best First'.
Re: Re: Regexp: Only tr second occurance
by tachyon (Chancellor) on Jan 02, 2004 at 13:13 UTC

    Easier to understand perhaps but your claim might be more justified if it actually worked properly.

    $test="123.0456.0789.0-WHOOPS"; $test =~ s/(\.0.*)(.0)/$1/; print "$test\n"; __DATA__ 123.0456.0789-WHOOPS

    you want a .*? ie

    $test =~ s/(\.0.*?)\.0/$1/s;
    will work. You also need a \. on the second .0 so it does not match the wrong stuff ie 00 and you don't need to capture into $2 as you are just going to delete that part....Finally if the string can have newlines in it you need the /s modifier which will not hurt anyway. Now it may or may not be as readable as Abigail-IIs example but should be approximitely as robust.

    cheers

    tachyon