我有一堆时间戳字符串。每个字符串有三个部分和部分之间的分隔符。分隔符可以是以下任一项[.:,;]符号。每个部分都包含数字。第一个可以包含一个或两个数字。任何其他部分可能包含两位数字。我需要检索这些数字并用它们执行一些操作。我用Python
所以我写了这个代码:
import re
lines = ('1:24.15', '17.01.01', '05:07:28', '175.11.123', '4:35,07', '01;21;73', '00;1;1', '7;7.12')
pattern = re.compile(r'^(\d{1,2})[:.,;](\d{2})[:.,;](\d{2})$')
for i in lines:
try:
mm, ss, ff = pattern.search(i).groups()
except AttributeError:
print('{} is invalid'.format(i))
print(int(mm) * 60 + int(ss) + round(int(ff) / 0.075 / 1000, 3))
我的问题是。。。如何减少这个正则表达式中的重复
r'^(\d{1,2})[:.,;](\d{2})[:.,;](\d{2})$'
先谢谢你。我将感谢你的任何建议
r'^(\d{1,2})([:.,;](\d{2})){2}$'
应该尽可能紧凑
为什么不使用^{} :
不过,这需要额外的长度检查
mm
、ss
和ff
。一方面-这会降低吸引力,但会导致更精确和更有意义的错误消息:相关问题 更多 >
编程相关推荐