Я видел это на скринкасте и не мог понять, что это было. Справочные листы просто складывают его с другими операторами в качестве общего оператора сопоставления шаблонов.Что такое оператор «= ~» в Ruby?
ответ
Он соответствует строке регулярному выражению.
'hello' =~ /^h/ # => 0
Если совпадения нет, то он вернет nil
. Если вы передадите ему недопустимые аргументы (т. Е. Левая или правая стороны неверны), он либо выбросит TypeError
, либо вернет false
.
Ну, ссылка правильная, это оператор «соответствует этому регулярному выражению».
if var =~ /myregex/ then something end
Я считаю, что это оператор сопоставления шаблонов, используемый с регулярным выражением.
Строка регулярного выражения. Вот подробный список операторов: http://phrogz.net/programmingruby/tut_expressions.html#table_7.1
От ruby-doc:
str =~ obj => fixnum or nil
Match-Если OBJ является Regexp, использовать его в качестве образца для сопоставления с ул и возвращает смещение позиции в матч начинается, или nil, если нет совпадения. В противном случае вызывает obj. = ~, Передавая str в качестве аргумента. Значение по умолчанию = ~ в объекте возвращает false.
"cat o' 9 tails" =~ /\d/ #=> 7
"cat o' 9 tails" =~ 9 #=> false
«возвращает позицию, в которой начинается матч», это важный бит для меня :) Промывал Google за ответ. Нашел его здесь спасибо! –
Почему второй пример возвращает false? Это потому, что '9' не является строкой? –
регулярные выражения строки:
ставит верно, если URL = ~ /google.com/
Вы можете прочитать '= ~' как 'сопрягает.
Как уже было сказано, =~
является регулярным выражением vs string match operator.
Примечание: Оператор =~
не является коммутативной
Пожалуйста, обратите внимание на примечание ниже от ruby doc site, как я видел еще только первая форма
str =~ regexp
используется в других ответах:
Примечание:
str =~ regexp
- это не то же самое, что иregexp =~ str
. Выбранные строки из названных групп захвата назначаются локальным переменным только во втором случае .
Вот документация для второй формы: link
Посмотрите его на http://www.ruby-doc.org/core/ – 2010-06-11 20:09:30
@ user97370: Довольно часто рубин документы используются как легкомысленное решение для ответа на все вопросы, не понимая, что рубиновые документы не всегда являются легким для понимания сайтом.Довольно часто (большую часть времени) я начинаю с рубиновых документов, не понимая зашифрованных анемичных объяснений, а затем Google, только для того, чтобы найти в Google никаких решений. Для получения ответа не просто Google «Ruby = ~» или «Ruby = ~ method» или «Ruby = ~ operator». Было бы неплохо видеть, что меньше людей бросают рубиновые документы как ленивое решение и более подробно находят ответы, которые действительно помогают. – Padawan