【问题标题】:Log Parser Lizard (MS Log Parser) Ignore RegexLog Parser Lizard (MS Log Parser) 忽略正则表达式
【发布时间】:2015-03-16 08:49:20
【问题描述】:

第一个问题要温柔。

我是一个正则表达式学徒。我只是轻描淡写。我正在试验 LizardLabs 的 Log Parser Lizard。我正在编写一个 XML,应用程序使用 MS Log Parser 将正则表达式应用于日志文件,以在漂亮的 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 I 开始事件截止日期更新时间表

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,})))

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

我做错了什么?更复杂的是,使用普通的正则表达式(不通过这个应用程序运行它)似乎可以在我的第二个示例中正常工作。不知道如何进行这些“忽略”匹配是应用程序的错吗?

【问题讨论】:

    标签: regex xml logging regex-negation


    【解决方案1】:

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

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

    (?&lt;CLASS&gt;([A-Z][^\s]{1,}))该类是单个字母(例如'J'),后跟1或0个非空格字符?

    如果没有日志本身的格式,我无法为您提供更多帮助,但看起来应该是这样的: \s*(?&lt;PID&gt;([^\s]*))\((?&lt;TID&gt;([^\s]*))\)\s(?&lt;DATE&gt;(\d{2}\/\d{2}\/\d{4}))\s(?&lt;TIME&gt;(\d{2}:\d{2}:\d{2}))\s(?&lt;CLASS&gt;([^\s]*))\s(?&lt;TYPE&gt;([^\s]*))\s(?&lt;MESSAGE&gt;(.*))

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多