用于解析句子部分的正则表达式

时间:2012-06-26 03:46:14

标签: regex pcre splunk

我正在尝试创建一个解析Windows日志事件中句子的一部分的正则表达式。

例如,EventCode = 7035会生成以下内容:

The Network Location Awareness (NLA) service was.....sent a start
The Network Connection service was....sent a stop
The HTTP service was....sent a start
The HTTP service was....sent a stop
etc...

我想解析的是,“The”和“service”之间的信息,以及作品的开始或停止。

这样我就可以建立一个已经开始或停止的服务列表。

对此的想法?

3 个答案:

答案 0 :(得分:0)

Python中的一个示例(问题中的文本位于s):

re.findall("(The.*?service).*?(start|stop)",s)

给出:

[('The Network Location Awareness (NLA) service', 'start'),
 ('The Network Connection service', 'stop'),
 ('The HTTP service', 'start'), ('The HTTP service', 'stop')]

答案 1 :(得分:0)

我认为您可以使用此正则表达式提取数据:

The (.*?) service .*? (start|stop)

数据正在捕获第1组和第2组。

答案 2 :(得分:0)

我使用了Splunk Interactive现场提取器。

在搜索中使用以下正则表达式

对于服务类型

| rex "(?i)^The\s(?P<ServiceType>[^ ]+)\sservice" 

服务状态

| rex "(?i)sent\sa\s(?P<ServiceStatus>[^ ]+)"

使用“ServiceType”和“ServiceStaus”字段获取更多结果和图表。

\ s用于空间或可以使用实际空间“”。