我有一个从“1”到“999”不等的输入字符串。此值表示视频片段的运行时间(以分钟为单位)。我需要将字符串转换为以小时和分钟表示的相同持续时间。
例如:
"97" needs to become "1h 37m"
"123" needs to become "2h 3m"
"231" needs to become "3h 51m"
我需要用正则表达式(PHP7中的PCRE)来实现这一点。4).不幸的是,我不能用PHP编程,所以我限制在regex模式。我已经写好代码了:(\d+)
为输入字符串匹配部分。但是正则表达式不能与数值进行比较。否则,我可以解决这个问题(在伪代码中):
int( [input var] / 60 ) = [hours]
[input var] modulus 60 = [mins]
print "[hours]h [mins]m"
因为我不能使用这个,所以我没有clou来指定正则表达式的替换模式。
我该怎么做?
1条答案
按热度按时间v7pvogib1#
使用Raku(以前称为Perl_6)
基本上,您编写了一行程序,通过自动打印逐行遍历文件
-pe
。使用传统的s///
替换运算符(对于多个替换,请使用s:g///
i。即全局)。1.搜索
\d+
原子1.用
<(
把火柴扔到外面。..)>
1.使用
{
。..}
码块来计算替换。1.将
$/
捕获强制为Int
,除以60
,取其Int
1.使用Raku的
%
模运算符来获得余数1.在适当位置添加
h
和m
,join
删除空格(如有必要)。样品输入:
样本输出:
HTH。
https://docs.raku.org
https://raku.org