这是我关于堆栈溢出的第一个问题。我已经找到了很多关于堆栈溢出的答案,但没有找到这个问题的答案。(请注意,感谢您迄今为止提供的所有好答案!!)在
我正在构建一个日志文件解析器,它将所有内容都输出到graylog,但是我很难匹配多行stacktrace(或多行信息消息)。在
现在我有一段python代码:import re
pattern = re.compile(r'^\[(\d{2})/(\d{2})/(\d{4}) (\d{2}):(\d{2}):(\d{2})\] MW(\d*) P(\d*) PR(\d*)\] (.{5}) - (.*) - (.*)', re.MULTILINE)
colnames = ('day','month','year','hour','minute','second','medewerkerid','patientid','praktijkid','level','logger','short_message')
file = open('file.log.2013-12-03','r')
for line in file:
match = pattern.match(line)
if match:
for item in match.groups():
print item
日志文件如下所示:
^{pr2}$
所有的单根原木线都能正常工作。除了多行之外,所有内容都被分成适当数量的组。我希望多行消息是1个附加组的一部分(它将被命名为完整的消息)。在
我已经尝试了很多方法,但是我的正则表达式知识不是很好。在
有人能给我个建议吗?在
基本上,我想要的是在任何一行的末尾,如果下一行不是以括号([)开头的话,就把整行放在1组中,然后所有的行,直到我们到达括号([)。在
如果行不匹配,我可以用else来做,但是我想知道是否也可以用1个regex行来完成。在