我已经写了下面的正则表达式来匹配命令行中人类可读的时间:
^(?:(?:(?:(\d+)d\s*)?(\d+)h\s*)?(\d+)m\s*)?(\d+)s$
使用非捕获字符串,该正则表达式能够同样地匹配以下格式的“可读时间”:
1d 2h 3m 4s
1h 2m 3s
1m 2s
1s
...and...
1d2h3m4s
1h2m3s
1m2s
1s
在这个正则表达式中,如果我包含一个
minutes
值,我也必须包含一个seconds
值。即,我不能仅提供15m
或1d3m
,我必须提供15m0s
或1d0h3m0s
。是否可以扩展正则表达式以匹配后两种用例?如何做到?请注意:我不一定要求一个现成的解决方案,但是指向正确方向的指针将不胜感激。
更新:只是简短的更新,我之前使用的是Python正则表达式。