регулярное выражение большой файл

Lite

Client
Регистрация
17.10.2013
Сообщения
294
Благодарностей
105
Баллы
43
Есть файл на 150мб текста, надо пройти по нему регуляркой и собрать все вхождения в список.
ПК не слабый, но стандартный regex из обработки текста работает слишком долго (минут 20 висел, просто не дождался окончания).
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 470
Благодарностей
10 020
Баллы
113
Есть файл на 150мб текста, надо пройти по нему регуляркой и собрать все вхождения в список.
ПК не слабый, но стандартный regex из обработки текста работает слишком долго (минут 20 висел, просто не дождался окончания).
попробуйте парсинг через снипет C#:

Код:
var parse = project.Variables["txt"].Value;
var regex = new Regex(@"регулярка");
var zp_list = project.Lists["Список 1"];
regex.Matches(parse).Cast<Match>().ToList().ForEach(m=>zp_list.Add(m.Value));
 
  • Спасибо
Реакции: Lite и orka13

yriy158

Client
Регистрация
10.08.2013
Сообщения
490
Благодарностей
302
Баллы
63
Есть файл на 150мб текста, надо пройти по нему регуляркой и собрать все вхождения в список.
ПК не слабый, но стандартный regex из обработки текста работает слишком долго (минут 20 висел, просто не дождался окончания).
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 652
Баллы
113
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
очень многое может зависеть от регулярки
 
  • Спасибо
Реакции: Mikhail B.

Lite

Client
Регистрация
17.10.2013
Сообщения
294
Благодарностей
105
Баллы
43
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
Так я про этот метод и пишу, что слишком долгое выполнение.

очень многое может зависеть от регулярки
([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}

Пробовал через c#
Код:
    string pattern = "a*";
      string input = "abaabb";

      foreach (Match m in Regex.Matches(input, pattern))
        project.Lists[ "mails"].Add(m.Value);
Тоже не выдержал и отрубил)

Сейчас поставил вариант sergodjan66, пока пыхтит, возможно что быстрее просто не выйдет, и надо ждать выполнения.
 

Lite

Client
Регистрация
17.10.2013
Сообщения
294
Благодарностей
105
Баллы
43
upd
Вопрос решился, всем спасибо за советы.
Оставил шаб на ночь, крутился часа 4 без результата. Потом решил почистить файл - там были большие массивы ненужной инфы, в виде гигантских строк.
Не знаю логику прохода, но именно в этих длинных строках был затык, после их удаления файл стал весить 30мб и прошелся регуляркой за несколько секунд.
 
  • Спасибо
Реакции: Sergodjan

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
Привет! Подскажите как выпапсить значение "4210 S Galapago St, Englewood, CO 80110" в таком блоке?
все пробелы 1в1 как на стр.
Код:
<address>
        4210 S Galapago St, Englewood, CO 80110
    </address>
спасибо за ответы
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 374
Благодарностей
2 043
Баллы
113
Привет! Подскажите как выпапсить значение "4210 S Galapago St, Englewood, CO 80110" в таком блоке?
все пробелы 1в1 как на стр.
Код:
<address>
        4210 S Galapago St, Englewood, CO 80110
    </address>
спасибо за ответы
а конструктор рег выражений в РМ что не спасает ?
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 374
Благодарностей
2 043
Баллы
113
(?<=<address>\n\s+)\w+.*?(?=\n)
 
  • Спасибо
Реакции: jun_dev

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18

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