Ruby正则表达式返回

Ruby正则表达式返回,ruby,regex,return,Ruby,Regex,Return,这是我的密码 pong = /return/.match(cap.array[0]) if pong == "return" puts "Pong" end cap.array[0]绝对匹配/return/,正如我使用pp时所看到的: #<MatchData "return"> # 但是由于某种原因,if语句没有触发。知道为什么不匹配吗?我尝试了=并且==认为这可能是一个类型问题,但没有乐趣。Regex#match返回一个MatchData对象。因此,它与字符串的比较失败

这是我的密码

pong = /return/.match(cap.array[0])
if pong == "return"
  puts "Pong"
end
cap.array[0]
绝对匹配
/return/
,正如我使用
pp
时所看到的:

#<MatchData "return">
#
但是由于某种原因,
if
语句没有触发。知道为什么不匹配吗?我尝试了
=
并且
==
认为这可能是一个类型问题,但没有乐趣。

Regex#match
返回一个
MatchData
对象。因此,它与字符串的比较失败

pong = /return/.match('i shall return this')

# cast it to string
if pong.to_s == "return"

# or do this
# if pong[0] == "return"
    puts "Pong"
end

为什么要两次检查??您可以通过以下简单方式完成此操作:

if /return/ =~ cap.array[0]
  puts "pong"
end
例如:

/return/ =~ "Functions return value" #=> 14
/return/ =~ "return" #=> 0
在ruby中:

puts "hello" if 0  #=> hello    # 0 is not false

因此您可以避免多次检查

什么是
cap.array[0]
?为什么你不能优化你的代码来适应一个Q和一个站点呢?它是一个由PcapRub数据包生成的数组。我认为没有必要说明它是什么,因为我知道它无论如何都是匹配的。你给读者增加了额外的负担。您应该简单地给出一个字符串文本,或者编写类似于
some\u string
的内容。这将更加清楚。我以后一定要这样做。