我正在使用Python正则表达式来提取“2h30m”格式的时间持续时间。
我遇到了一个问题,非捕获组(
有没有更好的方法来做这件事呢?
(?:...)
)被捕获在命名组内。
例如,将2h30m
与以下内容匹配:(?P<hours>\d+(?:h))?(?P<minutes>\d+(?:m))?
匹配字符串应该是{'hours': '2h', 'minutes': '30m'}
,而不是2
和30
。
解决方法是使用正向先行断言((?=...)
),但这不会更新正则表达式的状态,因此我们必须重复h
、m
后缀:
(?P<hours>\d+(?=h))?h?(?P<minutes>\d+(?=m))?m?
有没有更好的方法来做这件事呢?