-1
有人能告诉我为什么这个方法总是返回true,即使字符串不匹配模式?我已经通过TextWrangler的正则表达式引擎运行了正则表达式,并且该模式是正确的。谢谢Ruby的.match方法总是返回true
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} [\ s-] BEGIN /'(注意,如果字符类是类中的最后一个字符,但这是一个口味问题) –
感谢您指出逃脱的连字符 – Slinky
他们不是问题。我现在意识到我并不清楚。这不是说括号和管道“不需要”。你不能包含它们。因为,如果你这样做,字符类也将匹配一个字面括号或一个文字管道。还有关于你的新正则表达式。它和我的一样,它只是非常多余的。 “{1}”绝不会改变任何内容(在任何情况下)。而'([ - ] | \ s)'与'[\ s-]'相同。还要注意'\ s'也匹配制表符和换行符。不仅仅是空间。 –