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

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

Lite

Client
Регистрация
17.10.2013
Сообщения
294
Реакции
105
Баллы
43
Есть файл на 150мб текста, надо пройти по нему регуляркой и собрать все вхождения в список.
ПК не слабый, но стандартный regex из обработки текста работает слишком долго (минут 20 висел, просто не дождался окончания).
 
Есть файл на 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
Есть файл на 150мб текста, надо пройти по нему регуляркой и собрать все вхождения в список.
ПК не слабый, но стандартный regex из обработки текста работает слишком долго (минут 20 висел, просто не дождался окончания).
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
 
Я буквально 2 часа назад делал то же. Файл был на 220 мб. Виполнил: Файл: взять текст в переменную -Обработка текста: реджекс, брать все результаты, положить в список - Список с привязкой к файлу. Все ок, 10 сек и спарсило с сохранением.
очень многое может зависеть от регулярки
 
  • Оценить
Реакции: Mikhail B.
Я буквально 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, пока пыхтит, возможно что быстрее просто не выйдет, и надо ждать выполнения.
 
upd
Вопрос решился, всем спасибо за советы.
Оставил шаб на ночь, крутился часа 4 без результата. Потом решил почистить файл - там были большие массивы ненужной инфы, в виде гигантских строк.
Не знаю логику прохода, но именно в этих длинных строках был затык, после их удаления файл стал весить 30мб и прошелся регуляркой за несколько секунд.
 
  • Оценить
Реакции: Sergodjan
Привет! Подскажите как выпапсить значение "4210 S Galapago St, Englewood, CO 80110" в таком блоке?
все пробелы 1в1 как на стр.
Код:
Развернуть Свернуть Копировать
<address>
        4210 S Galapago St, Englewood, CO 80110
    </address>

спасибо за ответы
 
Привет! Подскажите как выпапсить значение "4210 S Galapago St, Englewood, CO 80110" в таком блоке?
все пробелы 1в1 как на стр.
Код:
Развернуть Свернуть Копировать
<address>
        4210 S Galapago St, Englewood, CO 80110
    </address>

спасибо за ответы

а конструктор рег выражений в РМ что не спасает ?
 
(?<=<address>\n\s+)\w+.*?(?=\n)
 
  • Оценить
Реакции: jun_dev

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