Это работает, если есть совпадение, но когда нет, оно просто возвращает все message.
Ответ 1
Если вы пытаетесь посчитать количество совпадений, значит, вы используете неправильный метод. split предназначен для того, чтобы взять строку и разрезать ее на биты, но, как вы заметили, если совпадений нет, то все возвращается. Я думаю, что вы хотите использовать String.scan:
message.scan(/\n.* at.* XXXXXXXX wrote:.*/m).size
Ответ 2
Скважина будет возвращать массив. Поэтому вы можете просто проверить длину > 1
m = message.split(/\n.* at.* XXXXXXXX wrote:.*/m)
if m.length > 1
return m.first
else
return nil
end