我很难从类似的文本中找出regrex表达式来获取值(用粗体显示)。下面是我正在收集的一些日志示例:
5439570:00009-01286 03/03/2015 10:17:31错误检查数据库mail/abc.nsf: RRV桶损坏。 6946980:00002-00001 03/14/201502:01:25 SchedMgr:扫描日历数据库mail/abc.nsf事件时遇到的错误: RRV桶损坏。 8454294:00002-00001 03/14/201502:01:25 RnRMgr:扫描数据库mail/abc.nsf事件时遇到的错误: RRV存储桶已损坏。 7405822:00009-01286 03/14/201500:03:04管理进程:路径:邮件/abc.nsf: RRV桶已损坏。 4260024:00002-00001 03/14/201500:02:17无法复制mail/flpilshi.nsf: RRV桶损坏。 7405822:00007-00772 03/13/2015 10:21:36行政过程:路径:/notes09/mail/abc.nsf: RRV桶损坏。 12714238:00002-00001 03/13/201505:06:45编目机无法打开数据库mail/flpilshi.nsf: RRV桶损坏。 9371716:00005-00515 03/12/201505:54:54错误压缩mail/abc.nsf: RRV桶损坏。 9371716:00005-00515 03/12/201505:54:54错误打开mail/abc.nsf: RRV桶损坏。
我知道我可以有像“数据库(.*?) RRV”这样的表达式来从
5439570:00009-01286 03/03/2015 10:17:31错误检查数据库mail/flpilshi.nsf: RRV桶损坏。
但是我仍然想找出是否有任何一个regrex表达式可以用来在"RRV桶腐败“这句话之前获取值?
谢谢你帮忙!!
发布于 2015-03-25 07:30:49
你很亲密。类似于:
/([^ ]+) RRV bucket is corrupt/应该得到你所需要的;它只是抓住所有出现在这个短语之前的非空格字符。
但是,在以下情况下,这将不会获得文件名:
8454294:00002-00001 03/14/201502:01:25 RnRMgr:扫描数据库mail/abc.nsf事件时遇到的错误: RRV桶损坏。
如果您特别想要文件名,最好调整一下正则表达式,只需查找以下内容:
/ ([^ ]+\.nsf)/发布于 2015-03-25 07:33:48
您可以使用(\/|\b)(\S+)(?:\s+for \S+)?(?=\:\s+RRV)正则表达式获取值,并组合第一组和第二组的值。
见这里的例子。输出:
Match 1:
Group1:
Group2: mail/abc.nsf
Match 2:
Group1:
Group2: mail/abc.nsf
Match 3:
Group1:
Group2: mail/abc.nsf
Match 4:
Group1:
Group2: mail/abc.nsf
Match 5:
Group1:
Group2: mail/flpilshi.nsf
Match 6:
Group1: /
Group2: notes09/mail/abc.nsf
Match 7:
Group1:
Group2: mail/flpilshi.nsf
Match 8:
Group1:
Group2: mail/abc.nsf
Match 9:
Group1:
Group2: mail/abc.nsfhttps://stackoverflow.com/questions/29249765
复制相似问题