Regex, чтобы поймать 3 строки за 6 секунд - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь поймать 3 или более строк в моем лог-файле в течение 2 секунд. Экзамен

213.240.206.92 - - [22/Apr/2018:16:47:50 +0300] "POST /?wc-ajax=get_refreshed_fragments HTTP/2.0" 200 6295 "https://localhost/shop/peach/corral/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
213.240.206.92 - - [22/Apr/2018:16:47:51 +0300] "POST /?wc-ajax=get_refreshed_fragments HTTP/2.0" 200 6295 "https://localhost/shop/peach/black/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
213.240.206.92 - - [22/Apr/2018:16:47:52 +0300] "POST /?wc-ajax=get_refreshed_fragments HTTP/2.0" 200 6295 "https://localhost/shop/m/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
213.240.206.92 - - [22/Apr/2018:16:47:59 +0300] "POST /?wc-ajax=get_refreshed_fragments HTTP/2.0" 200 6295 "https://localhost/shop/choko/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"

В приведенном выше случае мне нужно отловить первые три строки, потому что у них есть интервал в 2 секунды, а не 4-й, потому что у него есть интервал в 3 секунды от предыдущего. Я могу поймать только строку, используя

^<HOST> - .*"POST /\?wc-ajax=get_refreshed_fragments HTTP/2\.0"

Но это не работает для мультилинии.

^<HOST> -.*"POST /\?wc-ajax=get_refreshed_fragments HTTP/2\.0".*\s.*"POST /\?wc-ajax=get_refreshed_fragments HTTP/2\.0".*\s.*"POST /\?wc-ajax=get_refreshed_fragments HTTP/2\.0"
  1. Как перехватить 3 строки в течение 6 секунд?

  2. Нужно ли правильное регулярное выражение или я могу использовать свое единственное рабочее регулярное выражение и положить в jail.conf

    maxretry = 3

    findtime = 6

...