第一个问题,所以温柔点。
我是大王学徒。我只是轻轻地试了一下。我正在用LizardLabs的原木蜥蜴做实验。我正在编写一个XML,该应用程序使用MS将regex应用于一个日志文件,以在一个漂亮的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
regex正确地抓住前两行并很好地解析它,但是第三行失败了(显然,因为它的格式不同)。
问题:如何使用(?! JGroups )或^JGroups使正则表达式正确地忽略JGroups行?
我试过以下几种方法;
(?<CLASS>([^JGroups][A-Z][^\s]{1,}))
(?<CLASS>((?!JGroups([A-Z][^\s]{1,})))这两种方法似乎都没有让它忽略这一行(并继续匹配)。
我做错了什么?更复杂的是,使用普通regex (不通过这个应用程序运行它)似乎与我的第二个示例工作得很好。这是应用程序不知道如何进行这些“忽略”匹配的错误吗?
发布于 2015-06-29 00:16:53
在你的领地里有一些奇怪的事情。
\s{1,},您似乎希望使用空格作为分隔符,但实际上您是说1或0空格。
这个类是一个字母( (?<CLASS>([A-Z][^\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>(.*))
https://stackoverflow.com/questions/29072705
复制相似问题