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

Что такое оператор "= ~" в Ruby?

Я видел это на скринкасте и не мог понять, что это было. Справочные листы просто складывают его с другими операторами в качестве общего оператора сопоставления шаблонов.

4b9b3361

Ответ 1

Соответствует строке регулярному выражению.

'hello' =~ /^h/ # => 0

Если совпадения нет, возвращается nil. Если вы передадите ему неверные аргументы (т.е. Левая или правая стороны неверны), он либо выбросит TypeError, либо вернет false.

Ответ 2

От ruby-doc:

str =~ obj => fixnum or nil

Match-If obj является Regexp, используйте его как шаблон для сопоставления с str и возвращает позицию смещения, которую запускает матч, или nil, если нет совпадения. В противном случае вызывает obj. = ~, Передавая str в качестве аргумента. Значение по умолчанию = ~ в объекте возвращает false.

"cat o' 9 tails" =~ /\d/   #=> 7
"cat o' 9 tails" =~ 9      #=> false

Ответ 3

Ну, ссылка правильная, это оператор "соответствует этому регулярному выражению".

if var =~ /myregex/ then something end

Ответ 4

Как уже было сказано в других ответах, =~ - это регулярное выражение vs string match operator.

Примечание. Оператор =~ не является коммутативным

Пожалуйста, обратите внимание на примечание ниже на сайт ruby ​​doc, поскольку я видел только первую форму

str =~ regexp 

используется в других ответах:

Примечание: str =~ regexp не совпадает с regexp =~ str. Выбранные строки из названных групп захвата назначаются локальным переменным только в второй случай.

Вот документация для второй формы: ссылка

Ответ 6

Строка регулярных выражений:

ставит true, если url = ~/google.com/

Вы можете прочитать '= ~' как 'соответствует'.

Ответ 7

Я считаю, что это оператор сопоставления шаблонов, используемый с регулярным выражением.