有人能告诉我为什么这个方法总是返回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
答案 0 :(得分:1)
正如一个FYI,有几件事以“非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 Style guide同意用三元(?:
)编写琐碎的条件测试是正常的。