Как заменить URL с квадратными скобками на гиперссылку / якорный тег в тексте C # - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь заменить все вхождения URL тегом привязки.Я могу сделать это для большинства символов URL, но код ломается, когда в URL есть ( и ).

Например:

https://example.com/Heavy-Industry/Global-Perfluorosulfonic-Acid-(PFSA)-Market-Status-By-Manufacturers,-Types-And-Application,-History-And-Forecast-2025#sample

Вот мой код:

protected string MakeLink(string text)
{
    string text2 = Regex.Replace(text,
        @"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)",
        "<a target='_blank' href='$1'>$1</a>");

    return text2;
}

1 Ответ

0 голосов
/ 23 сентября 2018

Вы должны добавить круглые скобки к классу символов [\w\-.,@?^=%&amp;:/~+#()]

Если вы не используете группы захвата, я думаю, вы могли бы сделать свое регулярное выражение немного более компактным, используя одну группу захвата для замены,

Обратите внимание, что вам не нужно экранировать точку и знак плюс внутри класса символов.

((?:https?|ftp):\/\/[\w\-_]+(?:\.[\w\-_]+)+(?:[\w\-.,@?^=%&amp;:/~+#()]*[\w\-@?^=%&amp;/~+#])?)

Regex demo | Демонстрация C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...