Какой правильный синтаксис для чтения из загруженного файла журнала с помощью регулярных выражений? - PullRequest
0 голосов
/ 31 января 2019

Я хочу читать из загруженного файла журнала, используя регулярные выражения в rails.В моем выражении регулярного выражения у меня есть несколько групп захвата, и я хочу, чтобы они отображались по отдельности.

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

My test_list.txt содержит следующее:

Processing DocumentsController#create (for 111.221.122.111 at 2020-12-01 00:12:00) [GET]
  Session ID: 3wef789v4zvsdjf34ghm32558cxsdf35

Мой test.rb имеет следующее выражение регулярного выражения:

File.open("test_list.txt").each do |li|
  puts li 

  if (li[/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)\D+(\d{4}-[01]\d-[0-3]\d\s\d{2}:\d{2}:\d{2})\D+\[([A-Z]+)\]\D+([a-zA-Z0-9]{32}$)/])

  else 
    puts "Try again."
  end

end

Четыре группы захвата в выражении регулярного выражения из test.rbдолжен получить следующие значения из test_list.txt:

  1. 111.221.122.111
  2. 2020-12-01 00: 12: 00
  3. GET
  4. 3wef789v4zvsdjf34ghm32558cxsdf35

Как видите, это четыре IP-адреса, DateTime, имя метода и идентификатор сеанса.Я попытался запустить то же выражение регулярного выражения и образец текста в https://www.regex101.com, и он отлично работает.Но когда я пытаюсь сделать это из командной строки, это показывает следующее:

Guest:read:write ruby file user$ ruby test.rb
Processing DocumentsController#create (for 111.221.122.111 at 2020-12-01 00:12:00) [GET]
Try again.
  Session ID: 3wef789v4zvsdjf34ghm32558cxsdf35
Try again.
Guest:read:write ruby file user$ 

Что я здесь не так делаю?

...