[Moscow.pm] Ускорение регэкспа

Konstantin S. Uvarin khedin на gmail.com
Чт Июл 11 23:43:47 PDT 2013


Приветствую! 

  Как вариант: пилим строку субстрами, начиная с *каждого* символа, и
строим хеш: 

  { 15_символов_подряд => [ вхождение, вхождение2, ... ] }

  Затем все ключи, указывающие на массив <5 просто выкидываем, а
остальные проверяем, что они не слишком "тесные" (и выкидываем 
лишние вхождения).

  Памяти сожрёт много, зато время, кажется, около линейного.

> Здравствуйте.
> 
> Есть регэксп /(.{15})(.+\1){5}/o . Написан, чтобы искать повторяющиеся
> 6 раз и более подстроки длинной 15 и более символов. На большом 
тексте
> работает  очень  долго,  что объяснимо. Как бы его ускорить или 
решить
> задачу иначе?
> 
> -- 
> С уважением,
>  Михаил                          mailto:postmaster at softsearch.ru
> 
> -- 
> Moscow.pm mailing list
> moscow-pm at pm.org | http://moscow.pm.org
> 

--
WBR,
Konstantin S. Uvarin


Подробная информация о списке рассылки Moscow-pm