<div><p style="margin:15px 10px;font-size:1.1em;color:rgb(51,51,51);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;text-align:start;text-transform:none;white-space:normal;background-color:rgb(255,255,255);">Существуют следующие стандартные повторители: (https://metacpan.org/pod/distribution/POD2-RU/lib/POD2/RU/perlre.pod)</p><div><div style="font-family:inherit !important;font-size:12px;line-height:normal !important;margin:0px !important;overflow:auto !important;width:852px;"><table border="0" cellpadding="0" cellspacing="0" style="background:none !important;border-collapse:collapse;border-radius:0px !important;border-spacing:0px;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;max-width:100%;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:852px;"><tbody style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;"><tr style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;"><td style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:852px;"><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;"><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">*           Найдет 0 или больше раз</code></div><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">+           Найдет 1 или больше раз</code></div><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">?           Найдет 1 или 0 раз</code></div><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">{n}         Найдет точно n раз</code></div><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">{n,}        Найдет по крайней мере n раз</code></div><div style="background:none !important;border-radius:0px !important;border:0px !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px 1em 0px 0em !important;text-align:left !important;vertical-align:baseline !important;white-space:pre !important;width:auto !important;"><code style="background:none !important;border-radius:0px !important;border:0px !important;color:black !important;float:none !important;font-family:inherit !important;font-size:1em !important;font-style:normal !important;font-weight:normal !important;height:auto !important;line-height:normal !important;margin:0px !important;min-height:auto !important;overflow:visible !important;padding:0px !important;text-align:left !important;vertical-align:baseline !important;width:auto !important;">{n,m}       Найдет по крайней мере n раз, но не более m раз</code></div></div></td></tr></tbody></table></div></div><p style="margin:15px 10px;font-size:1.1em;color:rgb(51,51,51);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;text-align:start;text-transform:none;white-space:normal;background-color:rgb(255,255,255);">так что</p><p style="margin:15px 10px;font-size:1.1em;color:rgb(51,51,51);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;text-align:start;text-transform:none;white-space:normal;background-color:rgb(255,255,255);"> /bla\s*?bla/ совпадет и с [blabla] и [bla bla]</p><p style="margin:15px 10px;font-size:1.1em;color:rgb(51,51,51);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;text-align:start;text-transform:none;white-space:normal;background-color:rgb(255,255,255);">а</p><p style="margin:15px 10px;font-size:1.1em;color:rgb(51,51,51);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;text-align:start;text-transform:none;white-space:normal;background-color:rgb(255,255,255);"> /bla\s+?bla/ только с [bla bla]</p></div><div>29.10.2016, 11:28, "Динар Жамалиев via Moscow-pm" <moscow-pm@pm.org>:</div><blockquote type="cite"><div><div style="font-size:12.8px;">вернее такие шаблоны выдают идентичный результат</div><div style="font-size:12.8px;"> /bla\s*?bla/ и</div><div style="font-size:12.8px;"><div> /bla\s+?bla/</div></div></div><div> <div>29 октября 2016 г., 13:13 пользователь Динар Жамалиев <span><<a target="_blank" href="mailto:zhdinar@gmail.com">zhdinar@gmail.com</a>></span> написал:<blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div>Ясно изъясняться не моя фишка. Под сутью я имел другое. Для примера в контексте строки вида </div><div> "bla bla bla"  </div><div>шаблоны вида </div><div> /bla\s*?/ и</div><div><div> /bla\s+?/ и</div><div>идентичны в том смысле, что подстрока "bla " все равно будет найдена, не так ли?</div><div> </div></div><div><div>29 октября 2016 г., 2:41 пользователь Loginoff Nick via Moscow-pm <span><<a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>></span> написал:<div><div> <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><div>\s* != \s+ - так что это очень сильно меняет суть шаблона. В данном контексте пробела может и не быть... Так что это не решает проблему</div><div> </div><div>28.10.2016, 21:44, "Динар Жамалиев via Moscow-pm" <<a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>>:</div><blockquote type="cite"><div><div><div>Если везде заменить \s* на \s+, что не меняет сути шаблона, результат будет мгновенным, так как квантификатор +? не отступает назад, захват либо есть максимально возможный, либо нет. В то время как *? сначала захватывает все, затем отступает Каждый дополнительный * значительно увеличивает число комбинаций. В твоем случае 16й элемент приводит к экспоненциальному увеличению возможных комбинаций</div><div> <div>28 октября 2016 г., 22:30 пользователь Artem Zhuravlev via Moscow-pm <span><<a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>></span> написал:<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><div>Тут скорее дело в Захвате и построение обратных ссылок для них, на 16+ явно замедляется <br /><br /><br />Вот переменная без захватом отработает быстро<div style="font-size:12.8px;">my $regexp16 = qr('</div><div style="font-size:12.8px;">(?:3\s*?(?:[^a-z]\s*?)+?r)</div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">3\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">|(<span style="font-size:12.8px;">?:</span><span style="font-size:12.8px;">2\s*?(?:[^a-z]\s*?)+?r)</span></div><div style="font-size:12.8px;">');<br /><br /><br />Так что думаю стоит уменьшить количество захватов.<br /><br />Ну или как в книге пишут если можно то <br /><br />вместо /a|b/ <br /><br />пишите /a/ || /b/</div><div> </div></div><br />--<br />Moscow.pm mailing list<br /><a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a target="_blank" href="http://moscow.pm.org/">http://moscow.pm.org</a><br /> </blockquote></div></div></div></div>,<span>--<br /><span>Moscow.pm mailing list<br /><a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a target="_blank" href="http://moscow.pm.org/">http://moscow.pm.org</a></span></span></blockquote><div> </div><div> </div><div><div><div>-- <br />С Уважением, Login|off Nick или STork.</div><div> </div></div></div><br />--<br />Moscow.pm mailing list<br /><a target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a target="_blank" href="http://moscow.pm.org/">http://moscow.pm.org</a><br /> </blockquote></div></div></div></div></div></blockquote></div></div>,<span>--<br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></span></blockquote><div> </div><div> </div><div>-- <br />С уважением</div><div>Николай Мишин</div><div> </div><div> </div>