Шаблоны подстановки

Используя специальные символы, можно формировать шаблоны имен файлов.

* соответствует любой (возможно, пустой) последовательности символов
? соответствует точно одному любому символу
[ ] используются для группирования символов в наборы. Наборы могут задаваться: - явным перечислением символов, без указания разделителей между ними, например [atz56,=] – символ соответствует либо одной из трех букв a, t и z, либо одной из цифр 5 и 6, либо одному из спецсимволов запятая и знак равенства - путем указания диапазона, например [a-z] – символ соответствует строчной букве от а до z - комбинацией этих способов, например [0-9ij] – символ соответствует либо цифре, либо одной из букв i или j
! используется для отрицания набора символов, то есть имя файла не должно содержать указанных символов

Примеры:

f* соответствует файлам с именами, начинающимися с буквы f
*f* соответствует файлам с именами, содержащими букву f
program.? соответствует файлам с именами program, имеющими однобуквенные расширения
??[a-d]* соответствует файлам с именами, в которых третьей буквой является a, b, c или d
[!A-Z]*[2468] соответствует файлам с именами, не начинающимися с большой буквы и заканчивающимися на цифру 2, 4, 6 или 8

Если в имя файла должен входить какой-либо спецсимвол, то при указании шаблона этот спецсимвол необходимо предварять с помощью обратного слэша («\»), или экранировать, например:

[AEIOUYaeiouy]\*??? соответствует файлам с именами, начинающимися с гласной буквы, за которой следует символ *, а за ней – три произвольных символа

При использовании диапазонов символов следует учитывать, что они могут зависеть от выбранных настроек локализации. Например, диапазон [b-e] означает символы от b до е включительно. В английском языке, где сортировка букв идет по порядку (ABC…XYZabc…xyz), указанному набору соответствует набор символов b, c, d, e. Согласно правилам русского языка, сортировка тех же символов идет в другом порядке (аАбБвВ…эЭюЮяЯaAbBcC…xXyYzZ) и тому же диапазону соответствуют символы b, B, c, C, d, D, е. Для решения таких проблем имеются объявления некоторых классов и категорий символов:

[:upper:] Латинские буквы верхнего регистра
[:lower:] Латинские буквы нижнего регистра
[:alpha:] Латинские буквы верхнего и нижнего регистров
[:alnum:] Латинские буквы верхнего и нижнего регистров, цифры
[:digit:] Цифры
[:xdigit:] Шестнадцатеричные цифры
[:punct:] Знаки пунктуации
[:blank:] Пробел и табуляция
[:space:] Символы пропуска (пробел, табуляция, перевод каретки, перевод строки и т.п.)
[:cntrl:] Управляющие символы (клавиша [Ctrl]+символ)
[:graph:] Символы печати

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: