Поддержка регулярных выражений
Возвращает 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 при составлении масок для слов, работающих с заголовками окон.
![]()