操作者
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 是假的,这是有效的。如果你想要一个布尔值,请使用 #===
,如另一个示例所示。