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

Рубиновый оператор "= ~"

В рубине я прочитал некоторые из операторов, но я не смог найти =~. Что такое =~ для, или что это значит? Программа, которую я видел, имеет

regexs = (/\d+/)
a = somestring
if a =~ regexs

Я думаю, что это сравнение, если somestring равно цифрам, но есть ли какое-либо другое использование и каково правильное определение оператора =~?

4b9b3361

Ответ 1

Оператор =~ сопоставляет регулярное выражение с строкой и возвращает либо смещение совпадения из строки, если оно найдено, в противном случае nil.

ruby-1.9.2-p136 :003 > /mi/ =~ "hi mike"
 => 3 
ruby-1.9.2-p136 :004 > "hi mike" =~ /mi/
 => 3 

ruby-1.9.2-p136 :005 > "mike" =~ /ruby/
 => nil 

Вы можете поместить строку /regex по обе стороны оператора, как вы можете видеть выше.

Ответ 2

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

>> s = 'how now brown cow'

>> s =~ /cow/
=> 14
>> s =~ /now/
=> 4
>> s =~ /cat/
=> nil

Если строка соответствует выражению, оператор возвращает смещение, а если нет, то возвращается nil. Это немного сложнее, чем это: см. Здесь документацию; это метод в классе String.

Ответ 3

= ~ - это оператор для сопоставления регулярных выражений, который вернет индекс начала совпадения (или nil, если нет совпадения).

Смотрите здесь для документации.