If you're only looking for URLs in <li>
elements formatted like the one in your question, it should be much simpler than a lot of the other suggested solutions. You don't really need to validate your URLs, I assume, you just want to take a list of site names and URLs and turn the URLs into links.
Your search pattern could be:
<li>(.+) - (https?:\/\/)?(\S+?)<\/li>
And the replace pattern would be:
<li>$1 - <a href="(?2:$2:http\://)$3" rel="external">$3</a></li>
Just tested the find/replace out in TextMate and it worked nicely. It addes http://
if it isn't already present, and otherwise assumes that whatever is after the -
is a URL as long as it doesn't contain a space.
For testing out regular expressions, Rubular is a great tool. You can paste in some text, and it'll show you what matches as you type your regex. It's a ruby tool, but TextMate uses the same regex syntax as ruby.