Log Parser Lizard(MS Log Parser)忽略正则表达式

时间:2015-03-16 08:49:20

标签: regex xml logging regex-negation

第一个问题,请保持温和。

我是一名正则表达式。我只是轻轻地涉猎。我正在试验LizardLabs的Log Parser Lizard。我正在编写一个XML,应用程序使用MS Log Parser将regex应用于日志文件,以便在漂亮的GUI中返回结果。 XML包含你定义为字段的标签,所以请原谅凌乱的代码,但这就是它想要的......

<regex>\s{1,}(?&lt;PID&gt;(.*))\((?&lt;TID&gt;(.*))\)\s{1,}(?&lt;DATE&gt;(\d{2}\/\d{2}\/\d{4}))\s{1,}(?&lt;TIME&gt;(\d{2}:\d{2}:\d{2}))\s{1,}(?&lt;CLASS&gt;([A-Z][^\s]{1,}))\s{1,}(?&lt;TYPE&gt;(.{1}))\s{1,}(?&lt;MESSAGE&gt;(.{1,})).*</regex>
  <fields>
  <field name="PID" type="String" />
  <field name="TID" type="String" /> 
  <field name="DATE" type="String" />
  <field name="TIME" type="String" />
  <field name="CLASS" type="String" />
  <field name="TYPE" type="String" />
  <field name="MESSAGE" type="String" />
</fields>

示例行:

  

3840(5516)03/15/2015 00:10:04 JS我开始事件截止日期更新时间表

     

3840(5516)03/15/2015 00:10:04 JS I没有要更新的记录

     

3648(5444)03/15/2015 01:00:07 JGroups版本:2.6.15.GA

正则表达式正确抓取前两行并很好地解析它,但第三行失败(显然,因为它的格式不同)。

问题:如何使用(?!JGroups)或[^ JGroups]使正则表达式正确地忽略JGroups行?

我尝试了以下内容;

(?&lt;CLASS&gt;([^JGroups][A-Z][^\s]{1,}))
(?&lt;CLASS&gt;((?!JGroups([A-Z][^\s]{1,})))

似乎都没有忽略该行(并继续匹配)。

我做错了什么?为了进一步复杂化,使用普通正则表达式(不通过此应用程序运行)似乎与我的第二个示例正常工作。是不知道如何进行这些“忽略”匹配的应用程序的错误?

1 个答案:

答案 0 :(得分:0)

你的正则表达式中有一些奇怪的东西。

\s{1,}您似乎想使用空格作为分隔符但实际上是在说1或0个空格

(?<CLASS>([A-Z][^\s]{1,}))该课程是一个字母(例如&#39; J&#39;),后跟1或0个非空格字符?

如果没有日志本身的格式,我无法帮助你,但它看起来应该像这样: \s*(?<PID>([^\s]*))\((?<TID>([^\s]*))\)\s(?<DATE>(\d{2}\/\d{2}\/\d{4}))\s(?<TIME>(\d{2}:\d{2}:\d{2}))\s(?<CLASS>([^\s]*))\s(?<TYPE>([^\s]*))\s(?<MESSAGE>(.*))