LuaFAR Search

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Fri 13 Nov, 2009 07:29

Здесь можно обсуждать плагин LuaFAR Search. (Анонс).

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 16:38

Latest post of the previous page:

Трудно сказать, что правильнее, для этого надо знать предпочтения пользователей.
Но поскольку значение этой опции сохраняется в базе данных плагина, то достаточно сделать один поиск с включённой опцией, и она останется включённой на постоянной основе (пока пользователь не сбросит).

User avatar
sToLp
Posts: 921
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 105 times
Been thanked: 8 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 21:12

Shmuel,
Обновил плагин до v3.43.3.
Макрос перехода из итогов Grep в заданное место файла работает отлично.
Большое спасибо Вам за терпеливую помощь в выяснении проблемы (это было очень полезно) и за оперативную правку макроса!
Он стал даже несколько более функциональным и, соответственно, более удобным.

GAAlex
Posts: 15
Joined: Sun 16 Aug, 2015 05:48
Been thanked: 2 times

LuaFAR Search

Post by GAAlex » Wed 28 Nov, 2018 04:53

поиск (?{1}((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?{2}\d{2}\.\d{2}\.\d{2})\.(?{3}\S+)
Замена ${1} - ${3} - ${2}
Far все делает, а LuaFar Search пишет синтаксическую ошибку.
Подозреваю что не понимает именованную группу поиска

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 28 Nov, 2018 07:44

GAAlex, это известная особенность.

Плагин работает с 4-мя библиотеками регулярных выражений. Каждая из них поддерживает именованные группы, но только библиотека "Far regex" не отдаёт эту поддержку плагинам через API, поэтому в самом Фаре это поддерживается, а в плагине - нет.

3 другие библиотеки плагина (Oniguruma, PCRE и PCRE2) поддерживают именованные группы, только надо иметь в виду, что в них применяются другие обрамляющие символы: <> или '', а не {} как в Фаре. Чуть подробнее - в справке плагина.

GAAlex
Posts: 15
Joined: Sun 16 Aug, 2015 05:48
Been thanked: 2 times

LuaFAR Search

Post by GAAlex » Wed 28 Nov, 2018 08:44

Shmuel,
Понял, а где их скачать для x64?

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 28 Nov, 2018 08:51

На плагринге, на странице плагина, самый верхний даунлоад (Add-On).

GAAlex
Posts: 15
Joined: Sun 16 Aug, 2015 05:48
Been thanked: 2 times

LuaFAR Search

Post by GAAlex » Wed 28 Nov, 2018 10:10

Shmuel,
Спасибо. переделал поиск.
Ищем (?<Group1>((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?<Group2>\d{2}\.\d{2}\.\d{2})\.(?<Group3>\S+)
Меняем на ${Group1} - ${Group3} - ${Group2}
в плагине все работает, а вот при вызове пользовательского скрипта

Code: Select all

nF, nR = lfsearch.MReplaceEditorAction( "replace",
{
	bRegExpr=true,
	sScope="block",
	sOrigin="scope",
	sRegexLib="pcre",
	sSearchPat = "(?<Group1>((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?<Group2>\d{2}\.\d{2}\.\d{2})\.(?<Group3>\S+)",
	sReplacePat = "${Group1} - ${Group3} - ${Group2}",
}
)

получаю ошибку "Invalid escape sequence near '"(?<Group1>((^'

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 28 Nov, 2018 10:23

Тут у вас действительно ошибки в этих самых escape sequences.
Либо удвойте бэкслеши, то есть: \\w, \\d и т.п., либо, если не хотите удваивать, обрамляйте всё выражение не в двойные кавычки, а в [[...]].

Кстати, функция MReplaceEditorAction соответствует не обычной построчной замене, а multi-line replace.Для обычной используйте ф-цию EditorAction.

User avatar
DrKnS
Posts: 5047
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 177 times

LuaFAR Search

Post by DrKnS » Wed 28 Nov, 2018 11:25

Shmuel wrote:
Wed 28 Nov, 2018 07:44
не отдаёт эту поддержку плагинам через API
Как уже писалось - сделать можно. Предлагайте удобный вам интерфейс.

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 28 Nov, 2018 11:31

DrKnS, сделайте любой рабочий интерфейс, например по образцу PCRE или Oniguruma.
И, кстати, никто не в претензии, что это ещё не сделано.

GAAlex
Posts: 15
Joined: Sun 16 Aug, 2015 05:48
Been thanked: 2 times

LuaFAR Search

Post by GAAlex » Thu 29 Nov, 2018 02:51

DrKnS,
Как оказалось, я в претензии :-)
Я так понимаю я не могу надписать скрипт lua на замену текста с помощью регулярных выражений и скормить его FAR?
Пример скрипта - выше. Куча файлов (выгрузка из старой базы) в которых надо поменять местами нужные поля и вырезать не нужное.

Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Thu 29 Nov, 2018 07:47

GAAlex wrote:
Thu 29 Nov, 2018 02:51
Я так понимаю я не могу надписать скрипт lua на замену текста с помощью регулярных выражений и скормить его FAR?
Странный вывод. Именованные группы пока не поддерживаются, но ведь порядковые никто не отменял.
Переписать ваше выражение с использованием порядковых групп занимает не более двух минут:
Ищем ((?:(?:^\w[^\d]+_)+)|(?:^\w[^\d]+))(?:\.|_)(\d{2}\.\d{2}\.\d{2})\.(\S+)
Меняем на $1 - $3 - $2

Post Reply

Return to “Обсуждение плагинов”