正则表达式匹配流量因为。*

时间:2012-05-24 20:31:09

标签: regex

我试图将主机与此文件分开,但我的正则表达式同时选择两个主机:

timestamps|||scan_start|Tue May  1 23:00:29 2012|timestamps||foo.com|host_start|Tue May  1     23:16:51 2012|results|-0017\ntimestamps||foo.com|host_end|Tue May  1 23:19:17     2012|timestamps||bar.com|host_start|Tue May  1 23:24:31 2012|results|general/tcp|Sendmail 8.13.8\n\n\ntimestamps||bar.com|host_end|Tue May  1 23:29:11 2012|timestamps|||scan_end|Wed May  2 00:19:40 2012|

正则表达式:

timestamps\|\|[\w,\.]*\|host_start.*host_end

1 个答案:

答案 0 :(得分:3)

让明星变得懒惰:

timestamps\|\|[\w,.]*\|host_start.*?host_end

.*是“贪婪的”,尽可能地匹配。 .*?是“懒惰的”并尽可能少地匹配以实现匹配。因此,它只会匹配到最接近的host_end而不是最后一个。

此外,无需转义字符类中的点。你是否真的想在角色类中使用逗号,或者你的意思是[\w.]*