我在ruby脚本中有以下块:
for line in allLines
line.match(/aPattern/) { |matchData|
# Do something with matchData
}
end
如果/aPattern/
与行中的任何内容不匹配,该块是否仍会运行?如果没有,有没有办法可以强迫它运行?
答案 0 :(得分:1)
答案是否定的,如果匹配未成功,则不会运行匹配块。但是,for
通常不会在Ruby中使用,each
更惯用,例如:
allLines.each do |line|
if line =~ /aPattern/
do_thing_with_last_match($~) ## $~ is last match
else
do_non_match_thing_with_line
end
end
注意,=~
是正则表达式匹配运算符。