|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 22 Feb 2002 07:26:04 To : Victor Mironov Subject : Re: arrays -------------------------------------------------------------------------------- "Victor Mironov" <Victor.Mironov@p11.f77.n5025.z2.fidonet.org> wrote in message news:1014324362@p11.f77.n5025.z2.ftn... > Hарод, как быстро проверить наличие хотя бы одного из выражений (например, составляющих массив) в некоем тексте? Делаю grep($text =~ /$_/i, @array), но уже на 30 тыс. таких проверок получаются тормоза. В общем виде - никак. Можно составить одно огромное регулярное выражение, типа: my $re = join('|', map { "(?:$_)" } @array; и затем: $text =~ /$re/io; но радикального увеличения скорости это не принесет. Если, скажем, искомые выражения есть слова, то можно хранить их в хэше и проверять все слова из текста: grep { $hash{$_}; } $text =~ /\b(\w+)\b/g; Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65775c8f1da5.html, оценка из 5, голосов 10
|