我试图将主机与此文件分开,但我的正则表达式同时选择两个主机:
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
答案 0 :(得分:3)
让明星变得懒惰:
timestamps\|\|[\w,.]*\|host_start.*?host_end
.*
是“贪婪的”,尽可能地匹配。 .*?
是“懒惰的”并尽可能少地匹配以实现匹配。因此,它只会匹配到最接近的host_end
而不是最后一个。
此外,无需转义字符类中的点。你是否真的想在角色类中使用逗号,或者你的意思是[\w.]*
?