-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')

在用 Ruby 编写时,有些人可能会质疑使用三元语句进行打印,但Ruby 风格指南同意使用三元 ( ?:) 编写琐碎的条件测试是可以的。

于 2012-11-30T19:19:38.820 回答