我需要转换格式的时间戳' 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;
请帮我这个正则表达式。
答案 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
位于\w
。 Demo here