-1

文字列がパターンと一致しない場合でも、このメソッドが常に true を返す理由を誰か教えてもらえますか? TextWrangler の正規表現エンジンを介して正規表現を実行しましたが、パターンは正しいです。ありがとう

def validatePEM pem
 if /^-{4}([-\s])BEGIN/.match(pem)
   print "validatePEM found a match\n"
   return true
 else
   return false
  end
end
@s = '---BEGIN RSA PRIVATE KEY-----'


if validatePEM @s
  print "VALID PEM FILE\n"
else
  print "INVALID PEM FILE\n"
end
4

1 に答える 1

1

参考までに、「Ruby ではない」方法で行われていることがいくつかあります。

私は書くだろう:

def validatePEM pem
if /\A-{4}([-\s])BEGIN/.match(pem)
  print "validatePEM found a match\n"
  return true
else
  return false
  end
end
@s = '---BEGIN RSA PRIVATE KEY-----'


if validatePEM @s
  print "VALID PEM FILE\n"
else
  print "INVALID PEM FILE\n"
end

何かのようなもの:

def validatePEM(pem)
  !!pem[/\A-{4}([\s-])BEGIN/]
end

@s = '---BEGIN RSA PRIVATE KEY-----'

puts '%s PEM FILE' % (validatePEM(@s) ? 'VALID' : 'INVALID')

3 項ステートメントを印刷に使用することは、Ruby で記述しているときに疑問に思う人もいるかもしれませんが、Ruby スタイル ガイドでは、3 項 ( ) を使用して簡単な条件付きテストを記述しても問題ないと同意してい?:ます。

于 2012-11-30T19:19:38.820 に答える