Ru-Board.club
← Вернуться в раздел «Программы»

» Far Manager

Автор: shmuz1
Дата сообщения: 02.04.2016 11:25
Alexyz21
Оформляйте, хуже от этого не будет.
"Внутри" Far это умеет (начиная с билда 4259), но это умение не отражено в Far API.
Автор: Alexyz21
Дата сообщения: 02.04.2016 12:06
shmuz1

Цитата:
Оформляйте, хуже от этого не будет.

Ну это смотря кому Оформил. Скоро скажут, что меня слишком много
Автор: shmuz1
Дата сообщения: 02.04.2016 12:34
Alexyz21
Зря волнуетесь. У John Doe 356 тикетов, а у вас только 10.
Автор: Alexyz21
Дата сообщения: 02.04.2016 12:41
Да я не волнуюсь - zg большой, ему видней А JD да, спамер ещё тот Но его тикеты все толковые, ему можно.

PS. Ни у кого скриптов с использованием DI_LISTBOX нет? - У меня греп улова не принёс. С нуля писать затратно - надо, изучив маны, писать его загрузку, сохранение, редактирование и тд., проще спионерить.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 13:25
Alexyz21

Цитата:
Ни у кого скриптов с использованием DI_LISTBOX нет?

Копирование содержимого меню и списков John Doe Tue 07 Jul, 2015 17:18

Улучшение меню с дублирующимися хоткеями John Doe Fri 05 Dec, 2014 14:54

Добавлено:
Alexyz21

/(^.*?(\d+?)к2.*?)/i — работает правильно, как и ожидается;

/(^(\d+?) ГОСТ (?!Р))/i — тоже;

/(^.*?(\d+?)к2.*?)(^(\d+?) ГОСТ (?!Р))/i{?:%2%1} — не работает.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 15:57
Alexyz21

Файлы отсортированы по имени:
_
0123456abc
0123456de
12345
123abc
1bc
abc
bc

(^abc$) сортирует:

abc
_
0123456abc
0123456de
12345
123abc
1bc
bc

(^\d+abc$) сортирует:

0123456abc
123abc
_
0123456de
12345
1bc
abc
bc

(^abc$)(^\d+abc$){?:%2%1} – не сортирует

Видимо, я не понимаю чего то существенного.
Автор: YuS_two
Дата сообщения: 02.04.2016 18:09
Angel_Ka

Цитата:
(^abc$)(^\d+abc$)

Да, нужно прочитать регэксп буквально, тогда будет более понятно...
Такой регэксп, в принципе, не найдет совпадений даже в мультистроковом режиме...
А это то, что Вам требуется:

Код: (?:(^abc$)|(^\d+abc$)){?:%2%1}
Автор: Angel_Ka
Дата сообщения: 02.04.2016 19:47
YuS_two

Большое спасибо за очень полезную информацию!

Однако у меня, увы, выражение в целом (?:(^abc$)|(^\d+abc$)){?:%2%1} ни чего не сортирует.

(?:(^abc$)|(^\d+abc$)) также как и (?:(^abc$)) сортируют вот так:

abc
_
0123456abc
0123456de
12345
123abc
1bc
bc

а (^\d+abc$) сортирует так:

0123456abc
123abc
_
0123456de
12345
1bc
abc
bc



Добавлено:
YuS_two

P.S. на всякий случай: дело касается применения нового расширения опции №4 (сортировка файлов в панели по подстроке, захваченной регэспом; порядок сортировки можно изменить, добавив в конец регэкспа конструкцию {?:...}, где вместо ... указываем порядок возврата захваченных групп, например {?:%3%2%1}) замечательного макроса Panel.CustomSortByName.lua, автор которого Alexyz21.
Автор: Alexyz21
Дата сообщения: 02.04.2016 21:10
Angel_Ka
По F1 одна! страница текста о регэкспах - изучите внимательно, иначе вы зря тратите своё и наше время.

Телепаю, что в последнем случае вы хотите этого: ^(\d+?)([a-z]+)${?:%2%1}
Автор: Angel_Ka
Дата сообщения: 02.04.2016 21:54
Alexyz21

Цитата:
По F1 одна! страница текста о регэкспах - изучите внимательно,

Внимательно перечитал трижды. И составил несколько работающих полезных для себя регулярок, и продолжаю эту практику дальше.

Теперь же всего лишь пытаюсь добиться положительного результата в применении последнего усовершенствования опции №4 Вашего великолепного, очень полезного сборного макроса. Но, видимо, что то всё ещё не просекаю. Мне представляется, что последовательность работающих непротиворечивых регэкспов должна была бы работать в указываемой очерёдности. Но пока что этого у меня не получается. Поодиночке регулярки работают, а вкупе — нет.


Цитата:
^(\d+?)([a-z]+)${?:%2%1}
Большое спасибо за пример! Он хотя бы работает, в отличие от составленных мною. Однако и он сортирует не так как я ожидаю:
_
12345
abc
0123456abc
123abc
bc
1bc
0123456de

А мне в данном примере хотелось бы получить следующую сортировку:

0123456abc
123abc
abc
_
0123456de
12345
1bc
bc

Автор: Alexyz21
Дата сообщения: 02.04.2016 22:05
\d*?abc

Добавлено:

Цитата:
Мне представляется, что последовательность работающих непротиворечивых регэкспов должна была бы работать в указываемой очерёдности.

Нет! выше уже было дважды сказано - они либо работают одновременно, либо не работают вообще.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 22:10
Alexyz21

Цитата:
\d*?abc

Да, то, что надо! Круто! То есть в данном случае с последовательностью двух регэкспов я перемудрил. БОЛЬШОЕ СПАСИБО за науку!
Автор: Alexyz21
Дата сообщения: 02.04.2016 22:13
если нужно, чтобы работала какая-либо часть, то используют знак альтернативы |, например (это|или_это), а (это или_это) означает, что должно быть и то и другое и пробел между ними.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 22:14

Цитата:
Цитата:
Мне представляется, что последовательность работающих непротиворечивых регэкспов должна была бы работать в указываемой очерёдности.

Нет! выше уже было дважды сказано - они либо работают одновременно, либо не работают вообще.

А вот над этим мне надо думать. Ещё раз БЛАГОДАРЮ ВАС за наставления!
Автор: Alexyz21
Дата сообщения: 02.04.2016 22:26
если мы пишем (шаб1) (шаб2) (шаб3) это значит что поднимутся вверх только те имена, которые содержат все 3 шаба и пробелы их отделяющие, а не по выбору. Если группа может отсутствовать, то пишем (шаб)? Конструкция {?:%2%1} предназначена для перестановки групп местами и, соответственно, изменения порядка сортировки.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 23:00
Alexyz21
Благодарю Вас за настойчивые разъяснения! Думаю над ними и пробую составлять соответствующие им регулярные выражения как без, так и с применением конструкции {?:%2%1}. Постараюсь некоторое время Вам не докучать, буду накапливать опыт.
ОЧЕНЬ БЛАГОДАРЕН Вам за помощь!
Автор: Alexyz21
Дата сообщения: 02.04.2016 23:31
Angel_Ka
Знаете, как я проверил сортировку ваших файлов? - Открыл редактор, вставил скопированные здесь имена:
Код: 12345
abc
0123456abc
123abc
bc
1bc
0123456de
Автор: shmuz1
Дата сообщения: 02.04.2016 23:58
Alexyz21
Ох и сложно вы создаёте файлы, плагин + скрипт для этого используете. Я (ради интереса) сделал проще:

1. Скопировал имена в редактор.
2. Сделал вертикальный блок нулевой ширины на 1-й верт. позиции, высота = кол-ву имён файлов
3. Впечатал echo .> перед именем 1-го файла, оно впечаталось во всех строках благодаря установленному скрипту scite_like.lua
4. Сохранил файл с расширением .bat
5. Вышел из редактора и запустил файл на исполнение.

Описывать это здесь у меня заняло минут 5, а сделать - полминуты.

Добавлено:
Однако этот способ не работает для имён с пробелами. Тогда делаем так:
3a. Впечатываем copy NUL "
3b. CtrlF7 - делаем замену .$ на $0"
Автор: Angel_Ka
Дата сообщения: 03.04.2016 00:41
Alexyz21
shmuz1

Спасибо вам большое за ценные советы! Я даже сначала скопировал их себе в отдельные файлы. А уже потом попробовал их на практике — так мне легче их запоминать и осваивать.

Опробование регулярок в текстовом файле — очень хороший совет. И я впредь им часто буду пользоваться.

При этом само по себе составление регулярных выражений теперь уже не представляет для меня непреодолимую преграду. Потихоньку продвигаюсь в этом направлении. А вот составить дееспособный пример из набора регэксов с применением конструкции {?:%2%1} у меня всё ни как не получается. Но, надеюсь, со временем освоить. Вижу в этом практический интерес.

Добавлено:
И ещё есть у меня одна маленькая, и надеюсь временная, незадача с сайтом. Дело вот в чём. Мне казалось, что я приводил упрощённые нано-примеры, на которых тестирую работу макросов с реальными базами файлов. Но, пролистав два десятка страниц, понял, что либо их не приводил, либо они сгинули с последним сбоем на сервере руборда. Поэтому, во избежание искажённого доведения до вас информации, посчитал целесообразным привести упрощённый тест, с которым последнее время тренируюсь чаще всего. И всего то в нём 45 имён файлов. Однако запостить список мне не удалось. Ни непосредственно в текущем посте, ни под тегами more. Сайт подолгу висел, а потом скидывал отправку.
Автор: Victor_VG
Дата сообщения: 03.04.2016 00:57
shmuz1

Красиво, а вот ещё полезные инструменты описаны - RegExpDebuggers.chm. Я их пробовал и оба очень удобны.


Добавлено:
Angel_Ka

При сбое 25.03.2015 страницы темы с 49 по 63 были утрачены. Так же был утрачен ещё и ряд других тем и полетели аккаунты многих людей. Сейчас идёт ремонт дисковой подсистемы т.к. именно её отказ и привёл к сбою.
Автор: Alexyz21
Дата сообщения: 03.04.2016 01:19
shmuz1
RESearch у меня основной инструмент, равно как и скрипты в его замене. Поэтому этот подход на уровне рефлекса. fwrite() у меня в FAR вообще заглобалена, это тут я её расписывал, а так замена FarLUA _G.fwrite("",path..match(1)) и взлетело.
Автор: YuS_two
Дата сообщения: 03.04.2016 01:52
[more] Angel_Ka

Цитата:
дело касается применения нового расширения опции №4


Цитата:
А вот составить дееспособный пример из набора регэксов с применением конструкции {?:%2%1} у меня всё ни как не получается.

Т.к. тут уже всё разъяснили, то дублировать пояснения смысла нет...
Просто уточню, что принцип работы самих регэкспов, вполне самодостаточен и почти независим от реализаций, учитывая, конечно, особенности этих версий реализаций... а дополнительные опции, при использовании в конкретных ситуациях, как, в данном случае с {?:%2%1}, это уже дополнительные "плюшки" и тут, конечно, уже надо больше изучать методы применения тех самых плюшек, чем самих регэкспов.
В общем, необходимо "отделить мухи от котлет" и углубиться в изучение сначала первого (регэкспы), а потом уже другого... так будет проще применять это на практике.
[/more]
Автор: Angel_Ka
Дата сообщения: 03.04.2016 01:59
YuS_two
Понятно. Спасибо большое за совет! Буду учить матчасть.
Автор: Alexyz21
Дата сообщения: 03.04.2016 03:28
Angel_Ka
Пофиксил, изменил синтаксис с {?:%1} на {!:$1}, обновил.
Автор: Angel_Ka
Дата сообщения: 03.04.2016 10:36
Alexyz21

Цитата:
обновил

БОЛЬШОЕ СПАСИБО! И у меня наконец-то получилось сделать сортировку с указанием её порядка.
Список:
_
0123456abc
0123456de
12345
123abc
1bc
abc
bc

сортируется регексом ^(\d+?a)|(\abc+)${!:$2$1} так как мне надо, и в том порядке как мне надо:
abc
0123456abc
123abc
_
0123456de
12345
1bc
bc

и порядок этот я могу произвольно изменить ^(\d+?a)|(\abc+)${!:$1$2}:
0123456abc
123abc
abc
_
0123456de
12345
1bc
bc

Просто изумительно практично! Дальше, полагаю, дело у меня пойдёт уже проще.
Ещё раз БЛАГОДАРЮ Вас за прекрасный макрос пользовательской сортировки Panel.CustomSortByName.lua!
Автор: Alexyz21
Дата сообщения: 03.04.2016 14:01
Добавил возможность поиска нескольких групп по всей строке (имени) без необходимости указывать их взаимную последовательность в строке. Полезно, если в именах теги (группы) встречаются в разной последовательности относительно друг друга. В этом случае не нужно указывать все возможные альтернативные варианты взаиморасположения.
Автор: Angel_Ka
Дата сообщения: 03.04.2016 14:14
Alexyz21
ОГРОМНОЕ СПАСИБО! Но посмотрю чуть позже — пока ещё недостаточно основательно освоился с предыдущей версией макроса. Который работает очень хорошо!

Как пример, отлично работающий регекс:
/^(\d+?).*?[\.,;] .*?$|(\d+?)к2.*?|(\d+?).*? ГОСТ (?!Р).*?|(\d+?).*? ГОСТ Р.*?$/i{!:$1$3$2$4} — список файлов с 5-значными числовыми префиксами, в конце которых могут следовать дополнения к, кк, к0, к2 и т.п., отсортировать: 1) по именам с точками, запятыми и точками с запятыми в них (отлавливание неправильностей в именах); 2) по ГОСТ, но не ГОСТ Р; 3) по к2 в конце префиксов; 4) по ГОСТ Р; и всё это независимо от регистра букв.
Автор: Alexyz21
Дата сообщения: 03.04.2016 14:35
1. оканчивать группу на .*?| нет смысла - это матчит пусто, .*? в этом случае лучше убрать.
2. согласно вашего регэкспа матчатся как ГОСТ Р, так и без Р - нет смысла.
Но прогресс в понимании присутствует
Автор: Angel_Ka
Дата сообщения: 03.04.2016 14:45
Alexyz21

Вышеприведённый регекс в новой версии макроса вызывает ошибку:

Код: LuaMacro
...CtF12к_59-0базовыйСборный(Alexyz21).lua:251: invalid regular expression
Stack Traceback
===============
(1) Lua function '(anonymous)' at file 'C:\Far\Profile\Macros\scripts\she_lua\CtF12к_59-0базовыйСборный(Alexyz21).lua:251' (best guess)
Local variables:
res = boolean: true
i = number: 0
Автор: Alexyz21
Дата сообщения: 03.04.2016 14:52
нет, я там синтаксис изменил, теперь уже окончательно, обновил.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: оффтоп


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.