вернее такие шаблоны выдают идентичный результат /bla\s*?bla/ и /bla\s+?bla/
29 октября 2016 г., 13:13 пользователь Динар Жамалиев <[email protected]> написал: > Ясно изъясняться не моя фишка. Под сутью я имел другое. Для примера в > контексте строки вида > "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
