[英]Python multiline regex extract text after every timestamp
我有一個正在嘗試解析的日志文件。 每個日志在一行的開頭都有一個時間戳,格式YYY-MMM-DD HH:MM:SS.SSSSSS -0400:
時區信息是可選的(我現在可以忽略)。 我可以很好地匹配這些,但不能匹配時間戳之后的日志,它可能立即在同一行或下一行開始,並且可能有多行長。 我對正則表達式很滿意,但我很少做多行正則表達式。
這是我嘗試過的似乎是壁櫥的東西
# finds the first timestamp, everything to end of file is the log
re.findall('\n(^\d{4}-[A-Za-z]{3}-\d{2} \d{2}:\d{2}:\d{2}.\d{6}).*?:(.*)', log, re.DOTALL)
# finds every timestamp, all logs are empty (obviously too un-greedy)
re.findall('\n(^\d{4}-[A-Za-z]{3}-\d{2} \d{2}:\d{2}:\d{2}.\d{6}).*?:(.*?)', log, re.DOTALL)
我只是不知道如何 go 獲取隨后的日志,但如果看到另一個時間戳就停止。
您可以使用后跟日期時間模式的換行符拆分內容:
re.split(r'\n(?=\d{4}-[A-Za-z]{3}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})', log)
細節
\n
- 換行符(?=\d{4}-[A-Za-z]{3}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})
- 正向前瞻,需要以下模式立即出現在當前位置的右側:
\d{4}-
- 四位數字和一個連字符[A-Za-z]{3}-
- 三個字母和一個連字符\d{2}
- 兩位數
- 一個空間\d{2}:
- 兩位數和:
\d{2}:\d{2}
- - 兩位數, :
, 兩位數\.
- 一個點(注意它必須被轉義)\d{6}
- 六位數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.