Помогите составить регулярное выражение. Из исходного кода нужно взять одну строку из двух

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28
Приветствую всех, нужна помощь.

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

HTML:
<li>Рандомное_слово: <br></li>

<li>Рандомное_редложение<br></li><li>Рандомное_слово: значение<br></li><li>Рандомное_слово: <br></li>
 
Последнее редактирование:

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 432
Баллы
113
Просто первую строку удалить?
C#:
List <string> list = new List <string> (Regex.Split(project.Variables["txt"].Value, Environment.NewLine));
list.RemoveAt(0);
 
  • Спасибо
Реакции: Old

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 432
Баллы
113
C#:
Regex reg = new Regex("<li>Рандомное_слово: <br></li>", RegexOptions.IgnoreCase);
return reg.Replace(project.Variables["txt"].Value, "",1);
 
  • Спасибо
Реакции: Old

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28
C#:
Regex reg = new Regex("<li>Рандомное_слово: <br></li>", RegexOptions.IgnoreCase);
return reg.Replace(project.Variables["txt"].Value, "",1);
В том то и дело, что между тегами рандомное слово, а не постоянное, поэтому не сработает. Я так и подписал в коде "Рандомное_слово".

В принципе есть старое проверенное решение, наверное воспользуюсь им. Нужно перед всеми <li> добавить какой-нибудь уникальный текст, например <start>, а после </li> добавить </end>. После этого можно будет регуляркой привязаться к <start><li> и </li></end> и удалить нужную конструкцию.
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
string text = @"<li>Рандомное_слово: <br></li>

<li>Рандомное_редложение<br></li><li>Рандомное_слово: значение<br></li><li>Рандомное_слово: <br></li>";
return string.Join("<br></li>",text.Split(new[]{"<br></li>"},StringSplitOptions.None).ToList().Where(x=>!string.IsNullOrEmpty(Regex.Replace(x,@"<.*?>","").Split(':').Last().Trim())));
Если я правильно наванговал конструкцию, которую надо удалить...
 
  • Спасибо
Реакции: Old

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28
Если я правильно наванговал конструкцию, которую надо удалить...
Да, все верно.
Только удалилось два лишних тега.

HTML:
Результат получился такой:
<li>Рандомное_редложение<br></li><li>Рандомное_слово: значение

А нужен следующий:
<li>Рандомное_редложение<br></li><li>Рандомное_слово: значение<br></li>

Нужно оставить <br></li> в конце.
 
Последнее редактирование:

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
string text = @"<li>Рандомное_слово: <br></li>

<li>Рандомное_редложение<br></li><li>Рандомное_слово: значение<br></li><li>Рандомное_слово: <br></li>";
MatchCollection mc = Regex.Matches(text, @"<li>.*?<br></li>");
text = "";
foreach(Match m in mc)
    if(!string.IsNullOrEmpty(Regex.Replace(m.Value,@"<.*?>","").Split(':').Last().Trim()))
        text+=m.Value;
return text;
 
  • Спасибо
Реакции: Old

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28

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