php 从文件中查找以 xxx 字开头到字 yyy 的字符串

php find string from file starting with xxx word till word yyy

这是一个日志文件,包含这样的行

...
Mar  1 03:34:24 domain sshd[19178]: Failed password for root from 222.186.55.230 port 3005 ssh2
...

我想在用户失败的每一行和用户成功的其他数组行中放入数组以 xxx=Failed 开头或成功直到 yyy=ssh2 这样我就可以从两个数组中获取 ip:

preg_match_all("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/", $securelogfile, $matches);

并在新数组中获取不同的 ip。我在正则表达式方面很糟糕,我正在尝试的只是在浪费我的时间。

像@ThomasKilian 那样回答我的问题。我用于失败:

 preg_match_all("/^(\b(Failed)\b\s+)(\w+ +){4}((\d+\.){3}\d+)( +\w+){3}/", $securelogfile, $matches); 

对于失败的日志行和:

 preg_match_all("/^(\b(Success)\b\s+)(\w+ +){4}((\d+\.){3}\d+)( +\w+){3}/", $securelogfile, $matches);

请记住,第一个 {4} 表示 "Failed or Succeed"

之后的 4 个字

这给出了数组,我应该得到干净的 IP,然后得到差异。