Подтвердить что ты не робот

rails, ruby - учитывая регулярное выражение - определить количество совпадений

Учитывая что-то вроде:

 message.split(/\n.* at.* XXXXXXXX wrote:.*/m).first

Это работает, если есть совпадение, но когда нет, оно просто возвращает все message.

4b9b3361

Ответ 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