Ясно изъясняться не моя фишка. Под сутью я имел другое. Для примера в контексте строки вида "bla bla bla" шаблоны вида /bla\s*?/ и /bla\s+?/ и идентичны в том смысле, что подстрока "bla " все равно будет найдена, не так ли?
29 октября 2016 г., 2:41 пользователь Loginoff Nick via Moscow-pm < [email protected]> написал: > \s* != \s+ - так что это очень сильно меняет суть шаблона. В данном > контексте пробела может и не быть... Так что это не решает проблему > > 28.10.2016, 21:44, "Динар Жамалиев via Moscow-pm" <[email protected]>: > > Если везде заменить \s* на \s+, что не меняет сути шаблона, результат > будет мгновенным, так как квантификатор +? не отступает назад, захват либо > есть максимально возможный, либо нет. В то время как *? сначала захватывает > все, затем отступает Каждый дополнительный * значительно увеличивает число > комбинаций. В твоем случае 16й элемент приводит к экспоненциальному > увеличению возможных комбинаций > > 28 октября 2016 г., 22:30 пользователь Artem Zhuravlev via Moscow-pm < > [email protected]> написал: > > Тут скорее дело в Захвате и построение обратных ссылок для них, на 16+ > явно замедляется > > > Вот переменная без захватом отработает быстро > my $regexp16 = qr(' > (?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:3\s*?(?:[^a-z]\s*?)+?r) > |(?:2\s*?(?:[^a-z]\s*?)+?r) > '); > > > Так что думаю стоит уменьшить количество захватов. > > Ну или как в книге пишут если можно то > > вместо /a|b/ > > пишите /a/ || /b/ > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > ,-- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > С Уважением, Login|off Nick или STork. > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
