Page 1 of 1
Регэкспы в Macro{key:
Posted: Fri 18 May, 2018 23:00
by buniak_a_h
Поясните, пожалуйста, логику.
Мне нужно повесить макрос на любой символ слова (то, что в шаблонах поиска обозначается %w плюс подчёрк.) Естественно было би написать так:
key="/[%w_]/"; -- Bad!
или так:
key="/%w _/"; -- Bad!
Увы, не работает. Пришлось писать тупо перечислением:
key="/[A-Z_0-9]/"; -- Good!
Регэкспы в keys
Posted: Sat 19 May, 2018 00:03
by HaRT
buniak_a_h wrote: ↑Fri 18 May, 2018 23:00
key="/[%w_]/"; -- Bad!
А в чём выражается это “Bad!”?
20.2 – Patterns wrote:the char-set '[%w_]' matches both alphanumeric characters and underscores
Также у меня есть свидетельство, что в key
используется именно Lua pattern.
Регэкспы в keys
Posted: Sat 19 May, 2018 01:28
by buniak_a_h
HaRT wrote: ↑Sat 19 May, 2018 00:03
А в чём выражается это “Bad!”?
Если в описании макроса указать keys так, как указано в помеченных "Bad!" строках, то макрос просто не вызывается. Даже condition не вызывается. Пример -
тут, строки 197, 198 скрипта
HaRT wrote: ↑Sat 19 May, 2018 00:03
20.2 – Patterns писал(а):
the char-set '[%w_]' matches both alphanumeric characters and underscores
Собственно, это и надо. Заменил
%w на
A-Z0-9 - и всё заработало...
Регэкспы в keys
Posted: Sat 19 May, 2018 01:43
by HaRT
buniak_a_h wrote: ↑Sat 19 May, 2018 01:28
макрос просто не вызывается
Подтверждаю. А вот с таким срабатывает:
key='/[\\w_]/';
. Получается, там обычный Фар-регэксп, а не Lua pattern.
Регулярные выражения в поле key макросов
Posted: Thu 12 Dec, 2019 17:52
by Xerox
Вот интересно как это обьясняется, и как это лечить
Берем такой макрос:
Macro {area = "shell";
key = "/(Ctrl|RCtrl)(Right|Left)/";
condition = function(key) win.OutputDebugString("got key: "..key); return false; end;
action = function() end;
}
RCtrlRight/Left - ловится всегда
CtrlRight/Left - не ловится никогда
???
Regular expressions in keys of FAR макросов (LUA)
Posted: Thu 12 Dec, 2019 17:55
by HaRT
Научитесь уже находить ответы
Shmuel wrote: ↑Sat 06 May, 2017 06:40
fps wrote: почему не работает задание горячих клавиш вот таким регекспом:
key="/CtrlF([3-9]|10|11)/";
В мануале это оговорено. В регулярном выражении вместо Ctrl нужно указывать
LCtrl
или
RCtrl
или
.Ctrl
или
[LR]Ctrl
.
Регулярные выражения в поле key макросов
Posted: Thu 12 Dec, 2019 17:57
by Xerox
HaRT, пасиба
Регэкспы в Macro{key:
Posted: Thu 12 Dec, 2019 17:58
by HaRT
! | Message from: HaRT |
Xerox, и не создавайте новую тему, когда подходящая уже есть. |