Я хочу читать из загруженного файла журнала, используя регулярные выражения в 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:
- 111.221.122.111
- 2020-12-01 00: 12: 00
- GET
- 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$
Что я здесь не так делаю?