操作者

if /hay/ =~ 'haystack'
  puts "There is hay in the word haystack"
end

注意: 订单很重要。虽然'haystack' =~ /hay/在大多数情况下是等效的,但副作用可能会有所不同:

  • 只有在调用 Regexp#=~ 时,才会将从命名捕获组捕获的字符串分配给局部变量( regexp =~ str );
  • 由于右操作数可能是一个任意对象,因此对于 regexp =~ str,将被称为 Regexp#=~String#=~

请注意,这不会返回 true / false 值,而是返回匹配的索引(如果找到),如果未找到则返回 nil。因为 ruby 中的所有整数都是真的(包括 0)而 nil 是假的,这是有效的。如果你想要一个布尔值,请使用 #===,如另一个示例所示。