Регулярные выражения используются не только для поиска подстроки указанного вида, но и для замены. Эта возможность присутствует в библиотеках всех языков программирования, так что её просто нужно найти.
В C# для замены можно использовать статический метод Regex.Replace. Метод получает на вход строку, шаблон поиска, шаблон замены, и возвращает строку, в которое все совпадения заменены указанным образом.
Рассмотрим шаблон (a|b)(c|d). Он совпадает с подстроками ac, ad, bc, bd. Когда совпадение будет обнаружено библиотека регулярных выражений создаст подстановку для каждой пары скобок, то есть всего две. Первая подстановка $1 будет хранить первый совпавший символ, а вторая $2 — второй.
Regex.Replace("fadh", "(a|b)(c|d)", "g$2$1i");
// "fgdaih"
Как это работает? Библиотека находит подстроку ad внутри fadh. Поскольку в шаблоне поиска две пары скобок, библиотека запомнит две подстановки: в $1 попадёт символ a, а в $2 — символ d. Затем вся подстрока целиком будет заменена на шаблон g$2$1i, то есть на gdai. Всё, что было до найденного совпадения, и то, что будет после него, останется неизменными. Таким образом результатом замены будет строка fgdaih.
Для того, чтобы заменить URI на ссылку, надо использовать синтаксис:
public string ParsingLink(string text)
{
return Regex.Replace(text, "(...)", "<a href=\"$1\">$1</a>");
}
Здесь вместо ... нужно указать регулярное выражение, соответствующее URI, например вот это:
public string ParsingLink(string text)
{
return Regex.Replace(text,
@"((http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?)",
"<a href=\"$1\">$1</a>");
}
Regex? Каким образом он относится к "посветке" и вообще к GUI? – Андрей NOP Feb 19 '18 at 10:22WPFиRegex– Андрей NOP Feb 19 '18 at 10:46