Конвертирование ссылок

SToRm1kkk

Client
Регистрация
29.12.2019
Сообщения
19
Благодарностей
4
Баллы
3
Есть переменная project.Variables["article"].Value в которой находится статья с 3 ссылками [url=https://zennolab.com]zennolab.com[/url],[url=https://zennolab.com/1]zennolab.com 1[/url],[url=https://zennolab.com/2]zennolab.com 2[/url]

нужно конвертировать bb code ссылку в обычную ссылку вот так https://zennolab.com, https://zennolab.com/1, https://zennolab.com/2

Конвертирование делаю вот так

C#:
var linkLINK = System.Text.RegularExpressions.Regex.Match(project.Variables["article"].Value, @"(?<=\[url=).*?(?=])").Value;
project.Variables["article"].Value = Regex.Replace(project.Variables["article"].Value, @"\[url=.*\[/url]", linkLINK);
Но когда 3 ссылки в статье, конвертация происходит первой ссылки, а вторая и третья ссылка просто копируются с первой, и на выходе статье с первой ссылкой https://zennolab.com, https://zennolab.com, https://zennolab.com

Как сделать что бы сначала конвертировалась одна ссылка, после вторая, и после третья ссылка?
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 369
Благодарностей
959
Баллы
113
Апдейт. Не заметил, что тебе надо ссылку из бб кода оставить, а не "анкор".
Явно нужен цикл, иначе значение для "вставки" так и будет браться в переменную с первой попавшейся ссылки.
Ну или просто удалять сперва [url=, а потом что-нить типа][\w\W]*?\[/url] (хвост открывающего тега и все, до закрытия, включая анкор. Не слишком красиво, но у меня на некоторых проектах подобные решения годами работают без сбоев (делал еще на заре обучения, тогда не вникал, сейчас лень переделывать, да и смысла нет) )))
 
Последнее редактирование:

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
C#:
var text = project.Variables["article"].Value;
Regex.Matches(text, @"\[url=.*?\[/url]")
    .Cast<Match>()
    .ToList()
    .ForEach(x=>
        text = text.Replace(x.Value, Regex.Match(x.Value, @"(?<=\[url=).*?(?=])").Value));
return text;
 
  • Спасибо
Реакции: Moonwalker

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
всё давно придумано
111508

(?i)\[url=([^\[\]]+)\][^\[\]]+\[/url\]
 
  • Спасибо
Реакции: SToRm1kkk

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)