簡體   English   中英

Log Parser Lizard(MS Log Parser)忽略正則表達式

[英]Log Parser Lizard (MS Log Parser) Ignore Regex

第一個問題要這樣溫柔。

我是正則表達式padawan。 我只是輕輕地涉獵。 我正在使用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,})))

似乎都沒有使它忽略該行(並繼續匹配)。

我究竟做錯了什么? 為了進一步使其復雜化,使用普通的正則表達式(無需通過該應用程序運行它)似乎可以與我的第二個示例一起正常工作。 是應用程序不知道如何進行這些“忽略”匹配的錯誤嗎?

正則表達式中有一些奇怪的事情。

\\s{1,}似乎您想使用空格作為分隔符,但實際上是說1或0個空格

(?<CLASS>([AZ][^\\s]{1,}))該類是單個字母(例如'J'),后跟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>(.*))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM