What does it mean when Jesus say "Love your enemies" (Matthew 5:43-45)? This always confused me. We read this in Matthew 5:43-45

Matthew 5:43-45 (NIV) - “You have heard that it was said, Love your neighbor and hate your enemy. But I tell you, love your enemies and pray for those who persecute you, that you may be children of your Father in heaven. He causes his sun to rise on the evil and the good, and sends rain on the righteous and the unrighteous."

But we read that Jesus was severely angry with Jewish scholars (especially Pharisees and scribes) by calling them "hypocrites", "snakes", "offspring of vipers", "fools" etc in Matthew 23:13-36, Mark 7:6, etc.

We even see Jesus saying to Jews that their father is devil (John 8:44). Does this mean we are supposed to love our enemies, but hate God's enemies?
TL;DR Tough love is not hate

Judaism teaches that you should treat your enemy fairly. The laws of retribution, like "eye for an eye", are limitations on how much retribution you can do to someone. It's designed to promote justice over vengance. But Christ had this way of pushing you to go further than the Law required. So while the Law taught justice. Christ taught mercy.

But when Jesus was "on a rant" about the Jewish leadership, it wasn't hate. If you follow the news at all you've seen stories like the one about the fiery anti-gay preacher who was discovered having gay sex or the one about the man who murdered an abortion doctor in a church because the Bible says "Thou shall not kill". You've seen Christians who demand the strictest adherence to the most conservative reading of the Law while not being able to hold themselves to the same standard. This is what Jesus was addressing with the Jewish leaders. It was actually more on go beyond the letter of the Law. Don't just help someone because that's what the law says, help them because you care about them.

Several years ago I wrote an article about how I have to love the very people I want to hate most: our modern day Pharisees who preach hate and division in the name of Jesus. But, I don't have to love them because Christ told me to. I have to love them because I know exactly what it is to be wrong. I've been a hypocrite. I've been a liar. I've hurt people so badly that it's physically painful to even think about it. I am an enemy of God and I know that despite all of that God still loves me. The Bible, God's own Law, says that I'm free to hate them because they're my enemies but how can I hate them without hating myself. So I find myself forced to go beyond the law and love them. I want them to be better. I even correct them when I think it will do the most good. But, none of that means that I don't love them.