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

Lite

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 567
Благодарностей
9 184
Баллы
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 642
Баллы
113
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
очень многое может зависеть от регулярки
 
  • Спасибо
Реакции: Mikhail B.

Lite

Client
Регистрация
17.10.2013
Сообщения
288
Благодарностей
100
Баллы
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
Сообщения
288
Благодарностей
100
Баллы
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 375
Благодарностей
2 041
Баллы
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 375
Благодарностей
2 041
Баллы
113
(?<=<address>\n\s+)\w+.*?(?=\n)
 
  • Спасибо
Реакции: jun_dev

jun_dev

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

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