Я использую следующее регулярное выражение для захвата, чтобы соответствовать сообщению IRC PART:
:(?<nick>[a-zA-Z\d<\-\[\]\\^{}_]+)!(.+)@(.+) PART (?<chan>[#&][^\x07\x2C\s]{0,200}) :(.+)
Соответствует и захватывает группы правильно, потому что при запуске этого кода:
part_regex.match resp do |m|
puts "#{m[:nick]} has parted."
puts db.execute("SELECT * FROM users WHERE nick = ?", m[:nick])
end
Первый puts
работает и выводит правильную строку. Но второй puts
ничего не выводит. Я знаю, что в таблице есть никнейм. Всякий раз, когда я использую буквенную строку вместо m[:nick]
, она работает просто отлично. Я использую sqlite3-ruby Gem для манипулирования базой данных.
Вот полный вывод при получении сообщения PART:
>> :mark!~mark@Mark-Szymanskis-MacBook.local PART #testing :mark
mark has parted.