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


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

7 51

7 ответов:

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

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

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

С ruby-doc:

str =~ obj => fixnum or nil

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

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

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

if var =~ /myregex/ then something end

как уже говорилось в других ответах,=~ - регулярное выражение и оператор соответствия строк.

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

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

str =~ regexp 

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

Примечание: str =~ regexp - это не то же самое как regexp =~ str. Захваченные строки от имени группы захвата назначается локальным переменным только в второй случай.

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

соответствие строки регулярного выражения. Вот подробный список операторов:http://phrogz.net/programmingruby/tut_expressions.html#table_7.1

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

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

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

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