Помощь в написании регулярного выражения

Alabama

Client
Регистрация
02.02.2020
Сообщения
28
Реакции
2
Баллы
3
Можно ли из этого кода регулярным выражением спарсить прокси с портом и привести их к стандартному виду (прокси:порт):

50174


В регулярках не силён, как и в C#.

По отдельности взять прокси и порт и потом их "склеить" додумался как.
Но при выполнении проекта (при большом объёме) такое решение занимает много времени.
 
Можно взять полностью кусок и вырезать не нужное, но это опять же 2 действия
 
а по вашему вопросу , много непоняток , может там гораздо проще можно все парсить и не морочить себе голову.
регулярка прокси получаем (?<=>)\d+\.\d+\.\d+\.\d+(?=<)
регулярка пор получаем (?<=>)\d+(?=<)
 
а по вашему вопросу , много непоняток , может там гораздо проще можно все парсить и не морочить себе голову.
регулярка прокси получаем (?<=>)\d+\.\d+\.\d+\.\d+(?=<)
регулярка пор получаем (?<=>)\d+(?=<)

Это я осилил.
Вопрос в другом.
Можно ли одним регулярным выражением сразу получить значение: 208.67.183.240:80
 
Это я осилил.
Вопрос в другом.
Можно ли одним регулярным выражением сразу получить значение: 208.67.183.240:80
зачем ? сэкономить 1 наносекунду процессорного времени ? :) это какой то верх перфекционизма :)
 
зачем ? сэкономить 1 наносекунду процессорного времени ? :-) это какой то верх перфекционизма :-)

Я ж написал:
"Но при выполнении проекта (при большом объёме) такое решение занимает много времени."

На одной странице от 1 до 400 прокси. Таких страниц 180.
Если получать два значения (прокси, порт) и потом их "склеивать" (приводя к виду прокси:порт) стандартными экшен'ами, то проект достаточно долго выполняется. Уверен, можно это всё ускорить.
 
Вы написали что не сильны в коде ни в регулярках, то для вас все будет одинаково, по сути выполняться на странице , не в ПМ а в ЗП
 
я сегодня парсил 14к+страниц , нормально все работает ))))
 
Еще как вариант:

50182
 
  • Спасибо
Реакции: Alabama
Я ж написал:
"Но при выполнении проекта (при большом объёме) такое решение занимает много времени."

На одной странице от 1 до 400 прокси. Таких страниц 180.
Если получать два значения (прокси, порт) и потом их "склеивать" (приводя к виду прокси:порт) стандартными экшен'ами, то проект достаточно долго выполняется. Уверен, можно это всё ускорить.
если долго выполняется то это явно не в командах парсинга или математических операциях. включите трасировку да посмотрите где и за сколько выполняется. уж 100 000 раз спарсить и склеить для процессора вообще не проблема, у него частота работы на порядок выше. другое дело загрузка этих данных через интернет. но при чем тут регулярки ? :dy:
 
https://regex101.com/ все свои регулярные выражения составляю на этом сайте, единственное надо обратные слеши доьавлять иначе ошибку показывает. Использовал для создания регулярок на php но и для зенки вполне подходит.
 
  • Спасибо
Реакции: Sergodjan
Если вы не поняли он хочет 1 регуляркой получить и прокси и порт, но это на сколько мне известно не возможно. Поправьте если не прав
 
  • Спасибо
Реакции: Alabama
Все прокси со страницы в список
с# код
project.Variables["source"].Value - исходный код
Код:
Развернуть Свернуть Копировать
string source = project.Variables["source"].Value;
string pattern = @"(\d+\.\d+\.\d+\.\d+).*?>(\d{2,5})";

Regex r = new Regex(pattern);
var all = r.Matches(source);
foreach(Match m in all)
{
    string proxy = m.Groups[1].Value+":"+m.Groups[2].Value;
    if(!project.Lists["proxy"].Contains(proxy))
        project.Lists["proxy"].Add(proxy);
}
 
  • Спасибо
Реакции: Sergodjan и Alabama
Все прокси со страницы в список
с# код
project.Variables["source"].Value - исходный код
Код:
Развернуть Свернуть Копировать
string source = project.Variables["source"].Value;
string pattern = @"(\d+\.\d+\.\d+\.\d+).*?>(\d{2,5})";

Regex r = new Regex(pattern);
var all = r.Matches(source);
foreach(Match m in all)
{
    string proxy = m.Groups[1].Value+":"+m.Groups[2].Value;
    if(!project.Lists["proxy"].Contains(proxy))
        project.Lists["proxy"].Add(proxy);
}

Спасибо!
Именно такое решение и предполагал, если одним регулярным выражением нельзя "собрать" прокси из данного кода.
Просто писать не умею на C#.
 
50189


50190


50191


Так можно сделать!!! Код не могу вставить, ошибка какая-то браузера
 
  • Спасибо
Реакции: Alabama
Видимо, форум реагирует на теги <scr*pt>

PS: Вот тоже сейчас не пропускало, пока звездой не заменил одну букву.
 
  • Спасибо
Реакции: Alabama
Ребят подскажите как настроить регулярное выражение что бы брать class?
<div class="k-rnV-06582">Мужской костюм
<h3 title="Шкаф ольха" class="kf-or-85ea0 kf-oU-4671f">Шкаф ольха</h3>
<input class="k-CR-097d7 kf-E-P-wdXQ" id="subject" name="subject" placeholder="
 
Ребят подскажите как настроить регулярное выражение что бы брать class?
<div class="k-rnV-06582">Мужской костюм
<h3 title="Шкаф ольха" class="kf-or-85ea0 kf-oU-4671f">Шкаф ольха</h3>
<input class="k-CR-097d7 kf-E-P-wdXQ" id="subject" name="subject" placeholder="
Тут их несколько.
 
В этом и вопрос,сайт при каждом входе генерирует новые буквы -цифры,добавляет или убирает слэши и ковычки:be:
 
В этом и вопрос,сайт при каждом входе генерирует новые буквы -цифры,добавляет или убирает слэши и ковычки:be:
так надо класс забрать или из элемента с классом нужны данные ?
в первом случае просто в конструкторе регулярок составляется. что перед <div class=" и что после "> на выходе имя класса
во втором случае я бы через xpath сделал, но для xpath мало данных, зацепиться не за что. если там классы постоянно генерируются то цепляться только за структуру записи.
 
В этом и вопрос,сайт при каждом входе генерирует новые буквы -цифры,добавляет или убирает слэши и ковычки:be:
Когда отвечаете, используйте цитирование.
Просто скиньте текст который вам надо спарсить. Конкретно что надо получить из этого.
 
Последнее редактирование:
В этом тексте нет ссылки, которая содержит http://yabs.yandex.ru/count/****************** kron23.ru
А по текущей регулярке в результат выдаётся не только ссылка.
Вот регулярка, которая найдёт, то что нужно, если ссылка есть в исходном тексте:

http:\/\/yabs\.yandex\.ru\/count\/.*?kron23\.ru.*?\"
 
  • Спасибо
Реакции: санчил
отлично все работает , благодарствую!
 

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