choroba gave you the solution: but why use isdigit when you can already match directly digits with \d classe in regexes?
I gave a try to this never used by me module ending with the below oneliner: For sure is not the best thing ever seen ( PS indeed! see tremendously wise AnomalousMonk below) but you can play with it (be aware of the win32 double quotes!):
echo 1st rule: 2nd, 3rd and 4th floor must be free in 5 min. Not in 6. + Call 911 for emergencies | perl -MLingua::EN::Numbers="num2en,num2en_ordinal" -pne "s/(\d+)([st|n +d|rd|th])+/num2en_ordinal($1)/ge;s/(\d+)/num2en($1)/ge" first rule: second, third and fourth floor must be free in five min. N +ot in six. Call nine hundred and eleven for emergencies
You can use MO=Deparse to see the above a bit expanded:
perl -MO=Deparse -pne "s/(\d+)([st|nd|rd|th])+/num2en_ordinal($1)/ge; +s/(\d+)/num2en($1)/ge" LINE: while (defined($_ = <ARGV>)) { s/(\d+)([st|nd|rd|th])+/num2en_ordinal($1);/eg; s/(\d+)/num2en($1);/eg; } continue { die "-p destination: $!\n" unless print $_; } -e syntax OK
PPS maybe this is better regex (i'm so rusty..), the char class [..] was totally misplaced, but being all look around assertions zero width ones ( $& not filled ) a simple capturing group seems to work:
s/(\d+)(st|nd|rd|th)/num2en_ordinal($1)/ge
L*
In reply to Re: replace all numerics to words in a txt file -- oneliner
by Discipulus
in thread replace all numerics to words in a txt file
by imhacked
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |