Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: RE question; how to insert a digit between const[a-z]*3 && inc[0-9]*3? (sprintf)

by tye (Sage)
on Apr 16, 2013 at 01:10 UTC ( #1028789=note: print w/replies, xml ) Need Help??


in reply to RE question; how to insert a digit between const[a-z]*3 && inc[0-9]*3?

s{(?<=[a-z])([0-9]{1,3})(?=[.])}{ sprintf "%04d", $1 }ge;

...with whatever additions are needed near the start and end of that regex in order to only match the parts that you want to.

- tye        

  • Comment on Re: RE question; how to insert a digit between const[a-z]*3 && inc[0-9]*3? (sprintf)
  • Download Code

Replies are listed 'Best First'.
Re^2: RE question; how to insert a digit between const[a-z]*3 && inc[0-9]*3? (sprintf)
by hdb (Monsignor) on Apr 16, 2013 at 06:43 UTC

    Can it not be as simple as

    s{abc(\d+)\.html}{sprintf("abc%04d.html",$1)}ge;

    if all the filenames are of the form abc\d+.html or is there a catch?

      I doubt "abc" was as literal as you interpreted it to be.

      - tye        

        Greetings, and thank you for your thoughtful replies.
        Actually "abc" is a constant -- all the files in question are prefaced with those same 3 characters.
        So in an effort to be more concise;
        I need all the files prefaced by abc, to be followed by 4 digits.
        The files abc1000.html through abc9000.html, are already there.
        Which leaves abc1.html through abc999.html.
        I was able to rename all the files by cobbling up a script with the help of
        find(1),basename(1),cp(1), and rm(1) via for loop. But those won't help me with
        the references to those files within all the files themselves. :(
        So, in summary; how on earth can I append a 0 to abc
        on all the references to abc100.html - abc999.html? Appending 2, or three
        digits to the other references, will have the same solution. So I chose to use
        the "hundreds" list for a starting point.

        Thanks again for your thoughtful responses.

        #!/usr/bin/perl -Tw
        use perl::always;
        my $perl_version = "5.12.4";
        print $perl_version;
Re^2: RE question; how to insert a digit between const[a-z]*3 && inc[0-9]*3? (sprintf)
by taint (Chaplain) on Apr 16, 2013 at 16:58 UTC
    Greetings tye.
    Thanks for taking the time to respond.
    s{(?<=[a-z])([0-9]{1,3})(?=[.])}{ sprintf "%04d", $1 }ge;
    Looks brilliant in it's simplicity. But my head is still in sed(1) scripting mode. So I fear I am not yet following it. :(

    I'm attempting to sort it out now. :)

    Thanks again!

    #!/usr/bin/perl -Tw
    use perl::always;
    my $perl_version = "5.12.4";
    print $perl_version;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2020-02-17 09:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What numbers are you going to focus on primarily in 2020?










    Results (71 votes). Check out past polls.

    Notices?