Поддержка регулярных выражений
Возвращает TRUE, если при сравнении аргумента text с регулярным выражением найдено совпадение.
Пример:
#( test_re_match \ с помощью регулярного выражения находим в \ каталоге 'c:\xxx' все файлы, начинающиеся с \ букв 'vk_' и следующих за ними трех цифр, \ например, 'vk_123test.txt', 'vk_324.gif', vk_647999.pdf' и т. д. NoActive Action: FOR-FILES: "c:\xxx\*" RE-MATCH: "%FOUND-FILENAME%" "/vk_\d\d\d.*/i" IF \ ... выполняем работу THEN ;FOR-FILES )#
Существует также постфиксный вариант этого слова:
S" text" S" /regexp/" RE-MATCH
Синтаксис регулярных выражений подробно описан здесь.
См. также примечания.
RE-ALL: "text" "/regexp/" <...> ;RE-ALL
Позволяет проходить в цикле по всем найденным совпадениям. Цикл повторится столько раз, сколько найдено совпадений.
Пример:
#( test_re-all \ буква 'n' в слове 'nnCron' повторяется три раза, \ поэтому и цикл запустится ровно три раза NoActive Action: RE-ALL: "nnCron" "/n/" MSG: "n" ;RE-ALL )#
Синтаксис регулярных выражений подробно описан здесь.
См. также примечания.
Примечание 1: в работе с регулярными выражениями используйте переменную $0 для доступа ко всей найденной последовательности целиком, а переменные $1 - $15 для доступа к "запомненным" совпадениям (группам): $1 - первая совпавшая группа, $2 - вторая совпавшая группа и т. д.
Пример:
#( test_regexp NoActive Action: RE-MATCH: "Firstname Lastname" "/(.*) (.*)/" IF MSG: "$0 = %$0%" \ $0 = Firstname Lastname MSG: "$1 = %$1%" \ $1 = Firstname MSG: "$2 = %$2%" \ $2 = Lastname THEN )#
Вот еще один интересный пример - с помощью регулярных выражений отбираем все *.wav файлы в каталоге c:\temp и меняем их файловое расширение с *.wav на *.mp3:
#( test_regexp_rename
NoActive
Action:
FOR-FILES: "C:\TEMP\*.*"
RE-MATCH: "%FOUND-FULLPATH%" "/(.*)\.wav/i"
IF
\ $1 = полный путь и имя файла без расширения
FILE-RENAME: "%FOUND-FULLPATH%" "%$1%.mp3"
THEN
;FOR-FILES
)#
Примечание 2: помимо слов RE-MATCH: и RE-ALL: регулярные выражения применяются в nnCron при составлении масок для слов, работающих с заголовками окон.