Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Using sprintf in regular expreession.

by Marshall (Canon)
on Feb 05, 2022 at 08:11 UTC ( [id://11141146]=note: print w/replies, xml ) Need Help??


in reply to Using sprintf in regular expreession.

Since this is Perl and there is always more than one way.... you can use 2 regexes and then you don't need sprintf. I don't know which actually executes faster.

Code follows showing these cases..
a. could use one regex to handle 2 digit day, another for 1 digit day
b. probably better is to handle single digit day, then swap order instead of combining the replace and swap
c. doesn't handle single digit month, so could use a 3rd regex to fix that
d. finally, could fix any single digit and then swap order

use strict; use warnings; my $x='11-3-1936'; $x=~ s/(\d+)-(\d\d)-(\d+)/$3-$1-$2/; #2 digit day $x=~ s/(\d+)-(\d)-(\d+)/$3-$1-0$2/; #1 digit day print "$x\n"; # 1936-11-03 $x='2-5-1966'; $x=~ s/(\d+)-(\d)-(\d+)/$1-0$2-$3/; # fix 1 digit day $x=~ s/(\d+)-(\d+)-(\d+)/$3-$1-$2/; # swap order print "$x\n"; # 1966-2-05 doesn't fix single digit month $x='2-5-1966'; $x=~ s/(\d+)-(\d)-(\d+)/$1-0$2-$3/; # fix 1 digit day $x=~ s/(\d)-(\d+)-(\d+)/0$1-$2-$3/; # fix 1 digit month $x=~ s/(\d+)-(\d+)-(\d+)/$3-$1-$2/; # swap order print "$x\n"; # 1966-02-05 ok, but uses 3 regexes $x='2-5-1966'; $x=~ s/\b(\d)\b/0$1/g; # fix any single digit $x=~ s/(\d+)-(\d+)-(\d+)/$3-$1-$2/; # swap order print "$x\n" # 1966-02-05

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2026-01-15 20:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What's your view on AI coding assistants?





    Results (118 votes). Check out past polls.

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.