rails, ruby ​​- учитывая регулярное выражение - определить количество совпадений - PullRequest
26 голосов
/ 18 ноября 2010

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

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

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

Ответы [ 2 ]

50 голосов
/ 18 ноября 2010

Если вы пытаетесь подсчитать количество совпадений, значит, вы используете неправильный метод.split предназначен для того, чтобы взять строку и нарезать ее на кусочки, но, как вы заметили, если совпадений нет, то все возвращается.Я думаю, что вы хотите использовать String.scan вместо:

message.scan(/\n.* at.* XXXXXXXX wrote:.*/m).size
1 голос
/ 18 ноября 2010

Well split вернет массив. Так что вы можете просто проверить длину> 1

m =  message.split(/\n.* at.* XXXXXXXX wrote:.*/m)
if m.length > 1 
   return m.first
else
   return nil 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...