正则表达式否则

时间:2017-05-30 22:51:54

标签: php regex if-statement pcre

目前我的日志中有两种类型的行,使用正则表达式我想选择一种类型和另一种我需要丢弃的类型。

如果我得到一个日志行,在时间戳之后带有主机名,那么我想选择它 主机名模式将始终相同(例如,aabvabcw74.def.co.ukaaxptac103.def.co.uk等。 例如:

  

2017-04-24T09:20:01.687387 + 00:00 aabvabcw74.def.co.uk hostd-probe:

除了这种模式以外的任何东西,我想丢弃该行,如下例所示:

  

2017-04-14T15:18:34.727042 + 00:00 4月14日星期五15:18:34 aalesxbs029.def.co.uk lacp:DEBUG]:147,Recv信号15, LACP服务即将停止

- 它有2个时间戳,所以我想丢弃这个日志行

  

2017-04-24T09:20:01.687387 + 00:00 主持人探测完成。 aabvabcw74.def.co.uk hostd-probe:

---这里hostd是作为主机名出现的,这是错误的,所以我也想丢弃这个日志行

  

2017-04-24T20:53:29.334348 + 00:00 10.199.6.5 .def.co.uk aabvabcs15.def.co.uk Fdm:sslThumbprint> 95:43:64:71 :A3:60:D8:17:C8:6F:68:83:92:CE:E4:3B:53:4E:1D:AD10.199.6.5a2:0E:09:01:0A:00A2:0E:09 :01:0b:01 / vmfs / volumes / b01f388c-aaa4889f / vmfs / volumes / 6ad2d8d7-86746df14435.5.03568722host-619286aabvabcs16.def.co.uk

----这里我在时间戳之后得到一个ip地址,所以我也要丢弃这一行

请帮我解决问题

1 个答案:

答案 0 :(得分:0)

使用此正则表达式:

^\d+-\d+-\d+T\d+:\d+:\d+.\d+\+\d{2}:\d{2}\s(?:aabvabcw74|aaxptac103).def.co.uk
带有标记gm

或者,如果您不关心时间戳格式,那么更简单:

^[\dT:\.+-]+\s(?:aabvabcw74|aaxptac103).def.co.uk

Regex101 Demo