簡體   English   中英

使用Python中的正則表達式獲取字符串的一部分

[英]Obtain part of a string using regular expressions in Python

我正在處理需要在Python中轉換為日期的字符串。 在正常情況下,我的字符串將具有%d/%m/%Y %H:%M:%S 例如: 18/02/2013 09:21:14

但是在某些情況下,我可以獲得諸如%d/%m/%Y %H:%M:%S:%ms ,例如: 06/01/2014 09:52:14:78

我想擺脫那位ms但我需要弄清楚怎么做。 我已經能夠創建一個可以測試日期是否匹配的正則表達式:

    mydate = re.compile("^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$")
    s = "06/01/2014 09:52:14:78"
    bool(mydate.match(s))

>>> False

但是我不知道如何僅獲得有趣的部分,即06/01/2014 09:52:14什么想法嗎?

您可以使用正向后視re.sub()

>>> re.sub(r'(?<=\d{2}:\d{2}:\d{2}).*','','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'

正則表達式可視化

Debuggex演示

re.sub函數如何

>>> re.sub(r'( \d{2}(:\d{2}){2}).*$',r'\1','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'
>>> re.sub(r'( \d{2}(:\d{2}){2}).*$,r'\1','8/02/2013 09:21:14')
'8/02/2013 09:21:14'
  • ( \\d{2}(:\\d{2}){2}) matches保存在捕獲組1 ( \\d{2}(:\\d{2}){2}) matches hours:min:sec`

  • .*$匹配毫秒

  • r'\\1'替換為第一個caputre組的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM