[英]Log Parser Lizard (MS Log Parser) Ignore Regex
第一个问题要这样温柔。
我是正则表达式padawan。 我只是轻轻地涉猎。 我正在使用LizardLabs的Log Parser Lizard进行实验。 我正在编写XML,该应用程序使用MS Log Parser将正则表达式应用于日志文件,以在漂亮的GUI中返回结果。 XML包含您定义为字段的标记,因此可以原谅凌乱的代码,但这就是它想要的方式...
<regex>\s{1,}(?<PID>(.*))\((?<TID>(.*))\)\s{1,}(?<DATE>(\d{2}\/\d{2}\/\d{4}))\s{1,}(?<TIME>(\d{2}:\d{2}:\d{2}))\s{1,}(?<CLASS>([A-Z][^\s]{1,}))\s{1,}(?<TYPE>(.{1}))\s{1,}(?<MESSAGE>(.{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行?
我已经尝试了以下方法;
(?<CLASS>([^JGroups][A-Z][^\s]{1,}))
(?<CLASS>((?!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.