parser

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

 

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

Ответ

Misha v.3 19.04.2015 03:58

тут есть нюанс...
в общем случае в результате может быть несколько одноимённых именованных групп. pcre позволяет такое (эта возможность задаётся у pcre на этапе компиляции регулярного выражения). и у него есть механизмы извлечь список _номеров_ групп для таких имён (в конечном счёте доставание результата идёт по номеру, а не по имени).

но вот у нас результат match -- table (я имею в виду внутренний результат, который попадает в результирующую таблицу при обычном поиске или который доступен в $match при замене). и у нас нет механизмов хранить в таблице несколько столбцов с одним именем (ну, создать таблицу с одноимёнными столбцами дело не хитрое, но вот достать их потом поотдельности невозможно).

поэтому мы не можем реализовать подобное в общем виде напрямую :(

это возможно сделать, если запретить дублирование имен у групп.
в общем виде можно для имени возвращать строку с сериализованными значениями столбцов. но это ни фига не упростит код, т.к. хочется $table.digits или $match.digits, а придется делать например:
$t[^deserialize[$table.digits]]
^t.menu{$table.[$t.0]}
, что отстой.

если у нас появится возможность хранить в table не только строки, то тогда это можно будет реализовать.