Медленная работа регулярного выражения.

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
С помощью get запроса получаю страницу одного фотобанка. Текст этой страницы получается невероятно гигантский. Мне нужно регулярными выражениями получить оттуда некоторые данные.

Что самое странное в тестере регулярных выражений регулярка находит нужные данные за наносекунды, а в экшне обработака текста эта же регулярка с этим же текстом работает примерно минут 5.

Такая же проблема всплыла когда я добавил проверку на пустоту переменной после get запроса.
Обычный 'get' != '' обрабатывается 6 минут. Проверил и в PM и в ZP. Версия ZP 5.24.0.0

Как быть? Почему в тестере регулярок всё работает быстро, а в экшне нет? Я впервые с такой ситуацией столкнулся, хотя регулярные выражения использую даже во сне.

Любым советам буду рад! Заранее спасибо всем, кто откликнется на мой зов о помощи!

Есть мысль - возможно в тесте регулярных выражений есть ограничение по количеству символов в тексте для обработки и получается что я помещаю туда только какую-то часть текста?
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 224
Баллы
113

orka13

Client
Регистрация
07.05.2015
Сообщения
2 173
Благодарностей
2 174
Баллы
113
  • Спасибо
Реакции: doc

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 803
Благодарностей
8 865
Баллы
113
С помощью get запроса получаю страницу одного фотобанка. Текст этой страницы получается невероятно гигантский. Мне нужно регулярными выражениями получить оттуда некоторые данные.

Что самое странное в тестере регулярных выражений регулярка находит нужные данные за наносекунды, а в экшне обработака текста эта же регулярка с этим же текстом работает примерно минут 5.
Как вариант, можно перед парсингом по рег-выражению, обрабатывать исходник таким C#-кодом:
Код:
return Global.IE.Screening.StringMacrosScreening(project.Variables["source"].Value);
Он убирает конструкции похожие на макросные.
В переменной source должен находиться исходник после get-запроса.
В кубике C# пропишите переменную для вывода результата и уже в этой переменной парсите.
 
Последнее редактирование:

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
Как вариант, можно перед парсингом по рег-выражению, обрабатывать исходник таким C#-кодом:
Код:
return Global.IE.Screening.StringMacrosScreening(project.Variables["source"].Value);
Он убирает конструкции похожие на макросные.
В переменной source должен находиться исходник после get-запроса.
В кубике C# пропишите переменную для вывода результата и уже в этой переменной парсите.
Спасибо! Это помогло! Я сперва костылём воспользовался - удалял все символы после первых 5к символов ( именно в них были все нужные данные), но ваш метод кажется мне более универсальным и потенциально поможет не получить ситуацию, когда я нужные данные своим кодом обрежу.
Спасибо!
 
  • Спасибо
Реакции: Sergodjan

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