parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Maxx 24.08.2010 16:27 / 24.08.2010 16:30

Этот шаблон, предложен Фридлом в его известной книге по регуляркам, ему нет смысла не доверять ;)

Кстати, Фридла внимательно никто не читает, у него там еще доводка шаблона до такого (с точки зрения эффективности) - (?<=\d)(?=(?:\d\d\d)+$), то есть вообще без группировки с запоминанием, т.к. она нигде не используется, вставка идет в позицию.


Проблема эта в парсере давно, точно была еще до версии 3.3.0 (когда был переход на свежие либы PCRE), я тоже натыкался на нее, не разобравшись сделал вот такую некрасивую метод-загрушку:
@formatInt[numb;separator]
^while(^numb.match[(?<=\d)(?=(?:\d{3})+^$)]){
  $numb[^numb.match[(?<=\d)(?=(?:\d{3})+^$)][]{^if(def $separator){$separator}{ }}]
}
$result[$numb]