Gunnar Hjalmarsson schreef:
> danlamb:

>> I need a regex to remove zeros after the . in a file name if they are
>> followed by another digit.
>>
>> Example:  XXXXXX.001  becomes XXXXXX.1
>
>      s/\.0+(?=[1-9])/./;

That rewrites the dot, and won't handle ".000".


I would write it like

    s/(?<=\.)0+(?=[0-9])//;


A more precise answer is:

    s/(?<=\.)0+(?=\d)//;

(because she said "digits" :)


I often see code that unnecessarily replaces something by itself,
like these:

    s/\.0+(?=\d)/./;
    s/(\.)0+(?=\d)/$1/;
    s/(\.)0+(\d)/$1$2/;
    s/\.0+(\d)/.$1/;

Maybe the Perl 5.10.x regex optimiser could be further optimised to
optimise those away. It looks easy to recognize that the substitution
part includes a start and/or an end section of the original.

-- 
Affijn, Ruud

"Gewoon is een tijger."


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to