【发布时间】:2026-01-06 20:00:02
【问题描述】:
我正在尝试使用正则表达式来识别以下格式的数据: XX 天,XX 小时,XX 分钟(预计由于空格、逗号和复数而导致的最小结构变化) 我想看到一种使用正则表达式的有效 python 方式,以便我可以获得与天数小时和分钟相关的数字。
我尝试了以下方法:
matchingTime = "27 days, 21 hours, 23 minutes ago"
re.search('([0-9]{0,2}).*day.* ([0-9]+) .*hour.* ([0-9]+) .*minute.*',matchingTime)
对于上述情况,它工作正常,我分别获得了组 1 2 3 中的值。
问题是其中一个字段可能不一定存在,比如说
matchingTime = "21 hours, 23 minutes ago"
对于上述情况,它失败了。
我知道我可以使用 try 和 excepts 来完成它,但我希望找到一种简洁有效的方法。
任何输入都会非常有帮助。很高兴对我的查询提供任何进一步的澄清。
编辑:[0-9]{0,2} 的日子部分,只是尝试一些方法来解决这个问题。
【问题讨论】:
-
只放非捕获括号呢?围绕可选部分
'(:?([0-9]{0,2}).*day.* )?([0-9]+) .*hour.* ([0-9]+) .*minute.*'