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
In reply to Re: Using sprintf in regular expreession.
by Marshall
in thread Using sprintf in regular expreession.
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |