Поддержка регулярных выражений



RE-MATCH: "text" "/regexp/"

Возвращает 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 при составлении масок для слов, работающих с заголовками окон.