将h:m:s转换为0h:0m:0s(如果是单个数字则加零)

时间:2014-05-13 08:36:26

标签: regex perl

我需要转换格式的时间戳' h:m:s'到' 0h:0m:0s' 。即如果小时或分钟或秒中的任何一个是单个数字,则添加前导零。

example-

1:6应转换为01:06

1:5:6应该转换为01:05:06

05:6应该转换为05:06

我尝试了什么?

$this_video_duration =~ s/(^|:)(\d(:|$))/0$2/g;

请帮我这个正则表达式。

3 个答案:

答案 0 :(得分:3)

$this_video_duration =~ s/(\d+)/ length($1) >1 ? $1 : "0$1" /ge;

答案 1 :(得分:2)

$x = join ':', map { sprintf '%02d', $_ } split /:/, $x;

$x =~ s/\d+/ sprintf '%02d', $_ /eg;

答案 2 :(得分:1)

您的问题是第一场比赛中的结尾:是"吃"下一场比赛的开始:

您可以使用零宽度字边界:

$this_video_duration =~ s/\b\d\b/0$&/g;

\b将匹配\w\W\W\w\d位于\wDemo here