单个RegEx来解析这种日志格式?

时间:2009-12-17 21:33:38

标签: c# .net regex

我试图解决在.NET中使用单个RegEx解析日志文件的可行性

令人困难的是日志文件中的项目可以(但不总是)跨越多行,并且每个日志文件实际上可能包含多个“日志”。示例格式:

log:  
  event 1  
  event 2  
    additional information  
  event 3  
log:  
  event 1  
    additional information  
    more additional information  
  event 2  
    additional information  

这里必须能够区分哪些事件属于哪个日志并且还具有附加信息。当然,我能够抓住事件...我无法通过附加信息获取事件,更不用说将它们分组到日志中捕获:

我很感激信息而不是提供解决方案,所以我可以学习。我想我的问题是:这有可能吗?已经使用解析器完成了我只是想尝试发现替代方法。

3 个答案:

答案 0 :(得分:2)

这看起来手动解析比尝试在RegEx中更容易和更透明。模式非常简单。

答案 1 :(得分:2)

为什么要尝试使用单个正则表达式?使用适当的解析器。

正则表达式对于简单的字符串操作非常棒,但是一旦你得到更复杂的东西,实际的解析器就会好得多。

答案 2 :(得分:0)

使用模式分别提取每个日志条目是可能的(而且非常简单),但不能使用相同模式的捕获将匹配拆分为信息组。

你需要做的是为信息行构建一个模式(基本上,空格后跟其他东西到行尾),并重复它。