Регулярное выражение для поиска URL-адресов внутри строки

Возможный дубликат:
Код C # для связывания URL-адресов в строке

Я уверен, что это глупый вопрос, но я не могу найти достойный ответ нигде. Мне нужно хорошее регулярное выражение URL для C #. Он должен найти все URL-адреса в строке, чтобы я мог обернуть каждый из них в html, чтобы сделать его интерактивным.

  1. Какое лучшее выражение для использования?

  2. Как только у меня появится выражение, как лучше всего заменить эти URL-адреса на их правильно отформатированные копии?

Заранее спасибо!

Я использую это прямо сейчас:

text = Regex.Replace(text, @"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)", "https://stackoverflow.com/questions/4750015/regular-expression-to-find-urls-within-a-string/$1"); 

Используйте этот код

 protected string MakeLink(string txt) { Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase); MatchCollection mactches = regx.Matches(txt); foreach (Match match in mactches) { txt = txt.Replace(match.Value, "https://stackoverflow.com/questions/4750015/regular-expression-to-find-urls-within-a-string/" + match.Value + ""); } return txt; } . protected string MakeLink(string txt) { Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase); MatchCollection mactches = regx.Matches(txt); foreach (Match match in mactches) { txt = txt.Replace(match.Value, "https://stackoverflow.com/questions/4750015/regular-expression-to-find-urls-within-a-string/" + match.Value + ""); } return txt; }