词典告诉你副词before在这个句子中等于介词before+now. 即现在以前(的不确切过去时间),所以句子用现在完成时。
你的引申是错误的。你在before前加上5 years, 就成了确切的过去时间,再与现在完成时连用就是错误。
不要随便引申!!!
1.据个人经验来看,我应该从未遇到过此类原生句子。
2.分析的话,"5 years"&"never": never 本身含有”从未“的意思,肯定不能和five years 连用,否则言下之意five years之前有一次,那么就不是never了;再者,"5 years"&"before":"5 years before" 是一个特定的时间点,一般用于陈述过去发生的事情,一般用于一般过去时。
3. 如果想完成时+时间段,可以说 I haven't seen her so happy for 5 years.
4.此外,before 应该比before now 更常用。刚刚翻外网有native speaker 评论 before now "is not good English"。
以上仅作参考
有思考就有进步,鼓励。