现在完成时使用可以有两种情况:
(1)动作从过去开始,持续到现在.
eg: I have lived here for three years. (live这个动作从过去开始,持续到了现在.)
(2)动作发生在过去,对现在造成了影响.
eg: He has come. (come这个动作已经发生,“他已经来了”表示他现在在这里.)
要注意:归根到底,现在完成时属“现在时”,虽然动作已经发生,但必须和现在有关系,要么持续到现在,要么对现在有影响.
从题干中“我(到现在为止)从不后悔最终回国的决定”可知“在伦敦住了很多年”应该是过去的事情,而且这个动作既没有持续到现在也没有对现在造成影响,也就是说,没有使用现在完成时的条件,所以不能用have lived, 只能选A.
*如果没有后半句话,那 I have lived in London for many years 是没有错误的.