Рубиновый оператор "= ~"
В рубине я прочитал некоторые из операторов, но я не смог найти =~
. Что такое =~
для, или что это значит? Программа, которую я видел, имеет
regexs = (/\d+/)
a = somestring
if a =~ regexs
Я думаю, что это сравнение, если somestring
равно цифрам, но есть ли какое-либо другое использование и каково правильное определение оператора =~
?
Ответы
Ответ 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, если нет совпадения).
Смотрите здесь для документации.