Как в коде регулярных выражений перебрать все варианты

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 095
Благодарностей
31
Баллы
48
Всем привет подобрал регулярное выражение, которое выбирает нужные варианты
130502

А в коде появляется только самое первое совпадение


Код:
CityLiga=Regex.Match(CityLiga,@"((?<=<div>).*?(?=</div>))").Value;


130503

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

Alex91

Активный пользователь
Регистрация
15.08.2024
Сообщения
656
Благодарностей
182
Баллы
43
Пользуйся Искусственным Интеллектом, пока он еще отвечает и не поставил себе задачу подобную из фильма Терминатор ;-)

Вот ответ на твой вопрос. Перенос в зенку сделай самостоятельно, думаю с этим не будет проблем, раз ты выбрал работать в c# , а не на кирпичах.

Чтобы найти и вывести все результаты, соответствующие регулярному выражению, вместо метода Regex.Match, который возвращает только первое совпадение, следует использовать метод Regex.Matches. Этот метод возвращает коллекцию всех совпадений, которые можно затем перебрать и вывести.

——————— ИИ ——————
Вот пример кода, который делает это:

csharp
Copy
using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string CityLiga = "<div>Город1</div><div>Город2</div><div>Город3</div>";
string pattern = @"((?<=<div>).*?(?=</div>))";

MatchCollection matches = Regex.Matches(CityLiga, pattern);

foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
Объяснение:
Regex.Matches: Этот метод ищет все совпадения в строке CityLiga, которые соответствуют регулярному выражению pattern.

MatchCollection: Коллекция, содержащая все найденные совпадения.

Цикл foreach: Перебирает все совпадения и выводит их значения.

Результат:
Если CityLiga содержит строку <div>Город1</div><div>Город2</div><div>Город3</div>, то программа выведет:

Copy
Город1
Город2
Город3
Таким образом, вы получите все значения, которые находятся между тегами <div> и </div>.
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 095
Благодарностей
31
Баллы
48
Пользуйся Искусственным Интеллектом, пока он еще отвечает и не поставил себе задачу подобную из фильма Терминатор ;-)

Вот ответ на твой вопрос. Перенос в зенку сделай самостоятельно, думаю с этим не будет проблем, раз ты выбрал работать в c# , а не на кирпичах.

Чтобы найти и вывести все результаты, соответствующие регулярному выражению, вместо метода Regex.Match, который возвращает только первое совпадение, следует использовать метод Regex.Matches. Этот метод возвращает коллекцию всех совпадений, которые можно затем перебрать и вывести.

——————— ИИ ——————
Вот пример кода, который делает это:

csharp
Copy
using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string CityLiga = "<div>Город1</div><div>Город2</div><div>Город3</div>";
string pattern = @"((?<=<div>).*?(?=</div>))";

MatchCollection matches = Regex.Matches(CityLiga, pattern);

foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
Объяснение:
Regex.Matches: Этот метод ищет все совпадения в строке CityLiga, которые соответствуют регулярному выражению pattern.

MatchCollection: Коллекция, содержащая все найденные совпадения.

Цикл foreach: Перебирает все совпадения и выводит их значения.

Результат:
Если CityLiga содержит строку <div>Город1</div><div>Город2</div><div>Город3</div>, то программа выведет:

Copy
Город1
Город2
Город3
Таким образом, вы получите все значения, которые находятся между тегами <div> и </div>.
Спасибо но у меня в цикл не заходит, хотя значения имеются
130505
 
  • Спасибо
Реакции: bizzon

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 095
Благодарностей
31
Баллы
48
Да же ИИ не может подсказать. Может библиотеки нужно подгрузить, может еще что то
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 104
Благодарностей
132
Баллы
63
Тоже интересно.
Может еще кто подскажет.
Часто встречающаяся задача.
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 850
Благодарностей
1 564
Баллы
113
Капец, ребята вы проблему создали из неоткуда, держите

Парсит все результаты в переменную results
C#:
string text = instance.ActiveTab.DomText;
Regex reg = new Regex(@"https?://[^\s""'>]+");
MatchCollection matches = reg.Matches(text);

StringBuilder strb = new StringBuilder();

foreach (Match match in matches)
{
    strb.AppendLine(match.Value);
}

project.Variables["results"].Value = strb.ToString().Trim();

Парсит все результаты в список Links
C#:
string text = instance.ActiveTab.DomText;
Regex reg = new Regex(@"https?://[^\s""'>]+", RegexOptions.IgnoreCase);
MatchCollection matches = reg.Matches(text);

// Получаем список из ZennoPoster
var sourceList = project.Lists["Links"];

// Создаём временный список для хранения ссылок
var tempList = new List<string>();

foreach (Match match in matches)
{
    tempList.Add(match.Value);
}

// Добавляем все новые ссылки в ZennoPoster список без очистки
sourceList.AddRange(tempList);
 
Последнее редактирование:
  • Спасибо
Реакции: bizzon

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