Параметры функций принимают имена переменных без символа %, просто удалите их.
Я также хочу отметить, что если второй параметр должен быть регулярным выражением,
вместо переменной, содержащей регулярное выражение, вам понадобятся кавычки вокруг него.
Поскольку ваш скрипт передает пустую строку как шаблон, который всегда будет возвращать 1
(отказ интерпретируется как переменная с пустой строкой, связанной с ней).
Процитируем Lexikos:
«Пустая строка, скомпилированная как шаблон регулярного выражения, будет соответствовать ровно нулю символов в любой позиции, которую вы пытаетесь сопоставить. Подумайте об этом так: для любой позиции n в любой строке следующие 0 символов всегда одинаковы».
Поскольку вы просто проверяете правду
или находите индекс, я хочу отметить, что Autohotkey имеет для этого полезный сокращенный оператор.
string := "this is a test"
f1::
result := RegExMatch(string, "\sis")
traytip,, %result%
Return
f2::
result := string ~= "\sis"
traytip,, % result
Return
Обе эти горячие клавиши делают одно и то же; во втором используется сокращенный оператор ~=
и обратите внимание, что параметр лотка во втором примере имеет только один %
Когда вы начинаете параметр команды с %, который запускает выражение,
и переменные внутри выражения не заключаются в %.
Тернарный оператор ?:
также очень полезен:
string := "this is a test"
f3::traytip,, % (result := string ~= "\sis") ? (result) : ("nothing")
Это может показаться сложным, но на самом деле это очень просто.
Думайте о
%
как будто
?
как тогда
:
как еще
Если (верно), то (а) иначе (б)
% (истинный) ? (а) : (б)
Переменная будет оцениваться как False, если ей присвоено значение 0 (или ничего).
Но в этом примере сопоставляется "\sis" и возвращается индекс пробела (5),
поэтому он оценивается как Истинно.
Подробнее о переменных и операторах можно прочитать здесь:
http://l.autohotkey.net/docs/Variables.htm
person
Honest Abe
schedule
28.03.2012