Регэкспы в Macro{key: Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 1877
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 120 times
Been thanked: 167 times
Contact:

Регэкспы в Macro{key:

Post by buniak_a_h »

Поясните, пожалуйста, логику.
Мне нужно повесить макрос на любой символ слова (то, что в шаблонах поиска обозначается %w плюс подчёрк.) Естественно было би написать так:
key="/[%w_]/"; -- Bad!
или так:
key="/%w _/"; -- Bad!
Увы, не работает. Пришлось писать тупо перечислением:
key="/[A-Z_0-9]/"; -- Good!
Last edited by HaRT on Sat 19 May, 2018 01:57, edited 1 time in total.
Reason: Исправлен Заголовок Темы

User avatar
HaRT
Moderator
Posts: 9443
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 105 times
Been thanked: 222 times

Регэкспы в keys

Post 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.
Last edited by HaRT on Sat 19 May, 2018 01:47, edited 1 time in total.
Reason: Вычеркнуто неверное
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1877
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 120 times
Been thanked: 167 times
Contact:

Регэкспы в keys

Post 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 - и всё заработало...
Last edited by buniak_a_h on Sat 19 May, 2018 01:30, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 9443
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 105 times
Been thanked: 222 times

Регэкспы в keys

Post by HaRT »

buniak_a_h wrote:
Sat 19 May, 2018 01:28
макрос просто не вызывается
Подтверждаю. А вот с таким срабатывает: key='/[\\w_]/';. Получается, там обычный Фар-регэксп, а не Lua pattern.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Регулярные выражения в поле key макросов

Post by Xerox »

Вот интересно как это обьясняется, и как это лечить
Берем такой макрос:
  1. Macro {area = "shell";
  2.     key = "/(Ctrl|RCtrl)(Right|Left)/";
  3.     condition = function(key) win.OutputDebugString("got key: "..key); return false; end;
  4.     action = function() end;
  5. }
RCtrlRight/Left - ловится всегда
CtrlRight/Left - не ловится никогда
???
Last edited by HaRT on Thu 12 Dec, 2019 17:56, edited 5 times in total.
Reason: Исправлен Заголовок Темы

User avatar
HaRT
Moderator
Posts: 9443
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 105 times
Been thanked: 222 times

Regular expressions in keys of FAR макросов (LUA)

Post by HaRT »

Научитесь уже находить ответы
Shmuel wrote:
Sat 06 May, 2017 06:40
fps wrote: почему не работает задание горячих клавиш вот таким регекспом:
key="/CtrlF([3-9]|10|11)/";
В мануале это оговорено. В регулярном выражении вместо Ctrl нужно указывать LCtrl или RCtrl или .Ctrl или [LR]Ctrl.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Регулярные выражения в поле key макросов

Post by Xerox »

HaRT, пасиба

User avatar
HaRT
Moderator
Posts: 9443
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 105 times
Been thanked: 222 times

Регэкспы в Macro{key:

Post by HaRT »

 ! Message from: HaRT
Xerox, и не создавайте новую тему, когда подходящая уже есть.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

Return to “Нужна помощь”