我有一个字符串,它以下面的格式返回持续时间。
"152M0S" or "1H22M32S"
我需要从中提取小时、分钟和秒作为数字。
我试过下面的regex
video_duration.scan(/(\d+)?.(\d+)M(\d+)S/)
但它并没有像预期的那样回归。任何人都知道我错在哪里。
最佳答案
可以使用以下表达式:/((?<h>\d+)H)?(?<m>\d+)M(?<s>\d+)S/
。
"1H22M32S".match(/((?<h>\d+)H)?(?<m>\d+)M(?<s>\d+)S/)
#=> #<MatchData "1H22M32S" h:"1" m:"22" s:"32">
"152M0S".match(/((?<h>\d+)H)?(?<m>\d+)M(?<s>\d+)S/)
#=> #<MatchData "152M0S" h:nil m:"152" s:"0">
组后的问号使其成为可选的。访问数据:
$~[:h]
。