Как я могу эффективно соответствовать много различных моделей регулярных выражений в Perl?

у меня есть растущий список регулярных выражений, которые я использую, чтобы проанализировать лог файлы, в поисках "интересных" ошибок и отладки отчетности. Я в настоящее время разбивая их на 5 ведер, и большинство из них падает на 3 большие ведра. Я уже более 140 структуры до сих пор, и список продолжает расти.

Большинство регулярных выражений просты, но они также достаточно уникальными, поэтому мои возможности перехватывать несколько матчей с одного и того же шаблона очень мало, и далеко друг от друга. В силу характера, что я соответствием структуры, как правило, быть темным и поэтому редко противопоставить, поэтому я делаю кучу работы по каждой входной строки с конечным результатом того, что он не в состоянии ничему соответствовать, или совпадает с одним из общих в самом конце.

И потому, что количество входных (сотни мегабайт файлов журнала) я иногда ожидание минуту или две сценарий до конца. Следовательно, мое желание более эффективное решение. Я не интересуюсь ущерба для ясности скорость, хотя.

в настоящее время я регулярные выражения настроить следующим образом:

 if (($line =~ m{Failed in routing out}) ||
  ($line =~ m{Agent .+ failed}) ||
  ($line =~ m{Record Not Exist in DB}) ||
         ...

Есть ли лучший способ структурирования этой поэтому гораздо эффективнее, но по-прежнему ремонтопригодными? Спасибо!

Найдено 8 ответов:

How can I efficiently match many different regex patterns in Perl?

http://stackoverflow.com/questions/1478083/how-can-i-efficiently-match-many-different-regex-patterns-in-perl

Посмотреть решение →