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
的内容。这将更加清楚。我以后一定要这样做。