<div dir="ltr">верно, вот что значит давно не пользвался регулярками</div><div class="gmail_extra"><br><div class="gmail_quote">29 октября 2016 г., 16:03 пользователь Nikolay Mishin via Moscow-pm <span dir="ltr"><<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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)">Существуют следующие стандартные повторители: (<a href="https://metacpan.org/pod/distribution/POD2-RU/lib/POD2/RU/perlre.pod" target="_blank">https://metacpan.org/pod/<wbr>distribution/POD2-RU/lib/POD2/<wbr>RU/perlre.pod</a>)</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" <<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>>:</div><div class="HOEnZb"><div class="h5"><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 href="mailto:zhdinar@gmail.com" target="_blank">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 href="mailto:moscow-pm@pm.org" target="_blank">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 href="mailto:moscow-pm@pm.org" target="_blank">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 href="mailto:moscow-pm@pm.org" target="_blank">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 href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br> </blockquote></div></div></div></div>,<span>--<br><span>Moscow.pm mailing list<br><a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">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 href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">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" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a></span></blockquote><div> </div><div> </div></div></div><span class="HOEnZb"><font color="#888888"><div>-- <br>С уважением</div><div>Николай Мишин</div><div> </div><div> </div></font></span><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>