If $x is set to "01.02.03"

(Not using normal message quoting to make message shorter.
[1] ToddAndMargo    [2] Norman Gaywood    [3] Mark Senn)

DOING         $x ~~ s:global/"0"(\d)/ $0 /;                              [1]
SETS $x TO    "1 . 2 . 3"                                                [1]
COMMENT       Spaces on right hand side of s command are significant.    [2]

DOING         $x ~~ s:global/"0"(\d)/$0/;                                [2]
SETS $x to    "1.2.3"                                                    [2]
COMMENT       Zeroes would de deleted from "101.102.103".                [3]

(I suspect the general case is delete leading zeroes or zeroes
immediately following periods.)

DOING         $x ~~ s:g/(^|".")0+/$0/;                                   [3]
              or, using named captures,
              $x ~~ s:g/$<leader>=(^|".")0+/$<leader>/;
SETS $x to    "1.2.3"                                                    [3]
COMMENT       Zeroes would not be deleted from "101.102.103".            [3]

For me, the last solution is the clearest: replace all beginning of
strings or "."  followed by one or more zeroes by the beginning of the
string or ".", whichever was matched.

-mark

Reply via email to