верно, вот что значит давно не пользвался регулярками
29 октября 2016 г., 16:03 пользователь Nikolay Mishin via Moscow-pm < [email protected]> написал: > Существуют следующие стандартные повторители: (https://metacpan.org/pod/ > distribution/POD2-RU/lib/POD2/RU/perlre.pod) > * Найдет 0 или больше раз > + Найдет 1 или больше раз > ? Найдет 1 или 0 раз > {n} Найдет точно n раз > {n,} Найдет по крайней мере n раз > {n,m} Найдет по крайней мере n раз, но не более m раз > > так что > > /bla\s*?bla/ совпадет и с [blabla] и [bla bla] > > а > > /bla\s+?bla/ только с [bla bla] > 29.10.2016, 11:28, "Динар Жамалиев via Moscow-pm" <[email protected]>: > > вернее такие шаблоны выдают идентичный результат > /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 > > > > -- > С уважением > Николай Мишин > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
