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

  • Автор темы Автор темы SlavenTyz
  • Дата начала Дата начала

SlavenTyz

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

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


Код:
Развернуть Свернуть Копировать
CityLiga=Regex.Match(CityLiga,@"((?<=<div>).*?(?=</div>))").Value;



130503

Подскажите как исправить код, что бы все совпадения появлялись
 
Пользуйся Искусственным Интеллектом, пока он еще отвечает и не поставил себе задачу подобную из фильма Терминатор ;)

Вот ответ на твой вопрос. Перенос в зенку сделай самостоятельно, думаю с этим не будет проблем, раз ты выбрал работать в 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>.
 
Пользуйся Искусственным Интеллектом, пока он еще отвечает и не поставил себе задачу подобную из фильма Терминатор ;-)

Вот ответ на твой вопрос. Перенос в зенку сделай самостоятельно, думаю с этим не будет проблем, раз ты выбрал работать в 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
Да же ИИ не может подсказать. Может библиотеки нужно подгрузить, может еще что то
 
Тоже интересно.
Может еще кто подскажет.
Часто встречающаяся задача.
 
Капец, ребята вы проблему создали из неоткуда, держите

Парсит все результаты в переменную 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

Похожие темы

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