прошу совета - непонятное поведение регулярки при обрабоки большого объема даных

que_bunt

Новичок
прошу совета - непонятное поведение регулярки при обрабоки большого объема даных

Код:
#<a name=\"3\"></a>(.*?)<a name=\"[0-9]+\"></a>#is

если между <a name="3"></a> и <a name="[0-9]+"></a> небольшое количество символов (например 30-40к) то все ок, но если большое (100-150к символов) то регулярка не срабатывает


но при этом регулярка без ограничения жадности, тоесть
Код:
#<a name=\"3\"></a>(.*)<a name=\"[0-9]+\"></a>#is
срабатывает даже если всередине 100-150к символов


в чем проблема первой регулярки? как можна исправить?

буду благодарин за совет.
 
почитай доку, чтобы увеличить лимит
и тогда, именно не жажный квантификатор, будет хавать больше текста

еще можно разделить текст в массив, например по </a>, а потом уже реги
 
DiMA, я просмотрел документацию еще до создания, но нигде про лимит для не жадных квантификаторов не видел, не говоря уже про увеличение лимита.

не мог би ты указать как конкретно увеличить лимит?
или дай ссылку на конкретный документ в котором это описано.

спасибо.
 
я не помню, за тебя искать не буду, этот вопрос обсуждается в форуме каждый месяц
 
%)

я просмотрел топики связаные с жадностью, нигде упоминаний про какой-либо лимит не жданых квантификаторов не увидел.
дай хоть наводку как искать... ключевое слово что-ли..

и ты уверен что правильно понял вопрос? просто dimagolov, который первым, кажеться не совсем понял про что я спрашивал.
 
что-то из этого покрути в конфиге, как раз по умолчанию 100000

pcre.backtrack_limit
pcre.recursion_limit
 
que_bunt
ты то сам уверен, что правильно понял указание к решению?
иди увеличь буфер для регах
 
vovanium монстр, запомнить такие настройки, тем более введенные только с PHP версии 5.2.0 не легко запомнить.

большое человеческое спасибо! :)
 
Сверху