Именованных групп в шаблонах фаровских регекспов вроде нет (в хелпе не упоминаются), но в плагине S&R 2.5 они есть и работают.
Справка S&R 2.5 wrote:Можно также создавать поименованные скобки: (?{name}pattern)
В качестве имени "name" может быть пустая строка (получается безымянная скобка, на которую нельзя сослаться) или последовательность из знаков слова (\w) и пробелов (\s).
В Фаре это не работает.
Как мне казалось, S&R 2.5 и Фар используют одну и ту же библиотеку К.Ступника.
Вопрос к тем, кто знает: куда девалась эта фича и можно ли её восстановить (я не имею в виду написание с нуля).
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 12:49
by DrKnS
В библиотеке эта фича была опциональна и при импорте в Far подключена не была.
При желании всё можно.
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 13:52
by Shmuel
Было бы неплохо.
Отключена эта фича неудачно: до некоторого билда Фара выдавалось сообщение "could not find the string", а теперь как будто находит пустую строку в месте нахождения курсора (т.е. ничего не происходит). И то, и другое - неправильно: если фича отключена, значит шаблон этот - невалидный, о чём и должно сообщаться.
Update: "ничего не происходит" - это кажется реакция поиска в редакторе на любой невалидный шаблон.
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 15:26
by DrKnS
4112.
Фича включена на уровне библиотеки.
Для работы с ней также необходим клиентский код, если есть желание написать его - welcome.
Вместо "ничего не происходит" будут показываться разнообразные ошибки.
Текст ошибок не локализован, если есть желание перевести его - тоже welcome.
Кстати, позиция ошибки должна быть на 1 правее.
А также contains, а не contain.
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 17:57
by Shmuel
DrKnS wrote:4112.
Фича включена на уровне библиотеки.
Для работы с ней также необходим клиентский код, если есть желание написать его - welcome.
Что имеется в виду под клиентским кодом - расширение API RegExpControl ?
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 19:41
by DrKnS
С вышеописанным согласен, 4114.
Под клиентским кодом имеется в виду то, что в Search/Match надо передавать словарь (std::unordered_map<std::wstring, RegExpMatch>) который будет заполнен парами "имя: координаты", ну и потом что-то с этой информацией делать.
В плане API - нужно расширение структуры RegExpSearch (что будет весело, т. к. никто не напрягся добавить туда StructSize во время ломания API) и изобретение какого-то аналога map на plain C.
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 20:02
by zg
там есть void* Reserved.
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 21:48
by DrKnS
А если потом ещё что-то понадобится?
Re: Именованные группы в шаблонах регекспов
Posted: Sat 20 Sep, 2014 22:51
by zg
DrKnS wrote:А если потом ещё что-то понадобится?
понадобиться — будем думать.
Именованные группы в шаблонах регекспов
Posted: Sun 01 Feb, 2015 16:30
by DrKnS
Добавил сабж в редактор.
Именованные группы в шаблонах регекспов
Posted: Sun 01 Feb, 2015 17:11
by Shmuel
1. Я бы предложил, пока ещё не привыкли к существующему синтаксису (в поиске), изменить его на более стандартный (как в Perl, PCRE, Oniguruma).
То-есть, вместо(?{name}...) сделать допустимыми (?<name>...)и(?'name'...)
2. А также, как в PCRE и Oniguruma, именованная группа должна получать и номер тоже. У нас она не получает, и это неправильно.