Нужно заменить все ссылки в тексте на тег <a href=""></a>. При этом не нужно менять ссылки, которые являются атрибутами тегов (например: <a href="http:// toster. ru/">Тостер</a> или <img src="http:// mysite. com/photo.jpg" />). (пробелы поставил т. к. Тостер врубает свой интеллект)
Пример текста:
Принцип восприятия http://google.ru непредвзято создает www.ya.ru
паллиативный интеллект, support@rambler.ru условно. Концепция
<a href="http://mail.ru">ментально</a> оспособляет
<img src="http://bing.com/images/01.jpg" /> закон внешнего мира.
Результат:
Принцип восприятия <a href="https://google.ru/">https://google.ru</a>
непредвзято создает <a href="http://www.ya.ru/">www.ya.ru</a>
паллиативный интеллект, support@rambler.ru условно. Концепция
<a href="http://mail.ru">ментально</a> оспособляет
<img src="http://bing.com/images/01.jpg" /> закон внешнего мира.
Сейчас в наличие «правдоподобный» код, который отрабатывает замену ссылок, но не знаю ка его переделать, чтобы игнорировались ссылки в атрибутах (не силен в регексах).
private static Regex regExHttpLinks = new Regex(@"(?<=\()\b(https?://|www\.)[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|](?=\))|(?<=(?<wrap>[=~|_#]))\b(https?://|www\.)[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|](?=\k<wrap>)|\b(https?://|www\.)[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]",
	RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static string ParseHtml(this string source)
{
	if (string.IsNullOrEmpty(source))
		return source;
	var periodReplacement = "[[[replace:period]]]";
	source = Regex.Replace(source, @"(?<=\d)\.(?=\d)", periodReplacement);
	var linkMatches = regExHttpLinks.Matches(source);
	foreach (Match match in linkMatches)
	{
		var m = match.ToString();
		string s = (m.Contains("://")) ? m : "http://" + m;
		source = source.Replace(m,
			String.Format("<a href=\"{0}\" title=\"{0}\">{1}</a>",
			s.Replace(".", periodReplacement).ToLower(),
			m.Replace(".", periodReplacement)));
	}
	source = source.Replace(periodReplacement, ".");
	return source;
}