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
Вот интересно как это обьясняется, и как это лечить
Берем такой макрос:
  1. Macro {area = "shell";
  2.  
  3.     key = "/(Ctrl|RCtrl)(Right|Left)/";
  4.  
  5.     condition = function(key) win.OutputDebugString("got key: "..key); return false; end;
  6.  
  7.     action = function() end;
  8.  
  9. }
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, и не создавайте новую тему, когда подходящая уже есть.