繁体   English   中英

python中的正则表达式用于时间格式,后跟逗号和三位数字

[英]Regex in python for time format followed by comma and three digits

我有一个包含数千种时间格式的文件。 其中一些采用标准格式,而另一些则后跟逗号和三位数,如下所示:

    Standard format: 00:00:44
    Followed by comma and three digits: 00:00:46,235

我已经使用以下正则表达式删除了标准格式:

   text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)

没关系。 但是对于后跟逗号和三位数字的时间格式,到目前为止我尝试过的任何内容都没有帮助我删除它们。 请问,我怎样才能删除这个奇怪的时间格式模式?

您的正则表达式与标准时间格式相匹配。

r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)'

只需在末尾添加逗号部分,并将其设为可选。

r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:,\d{3})?$)'

(?:,\\d{3})?

(?:      )     Non-capturing group
   ,\d{3}      Comma, then three digits
          ?    Match zero or one times

快速而肮脏的方法是使用split()

text = text.split(",")[0]
text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$)', '', text)

您还可以更新您的正则表达式以在最后添加一个可选部分。

text = re.sub(r'^((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d),?\d{0,3}$', '', text)

使用re.sub

inp = "Followed by comma and three digits: 00:00:46,235"
output = re.sub(r'\b(\d{2}:\d{2}:\d{2}),\d{3}', r'\1', inp)
print(output)  # Followed by comma and three digits: 00:00:46

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM