Шаблон поиска

Шаблон поиска (англ. wildcard pattern, glob pattern) — метод описания поискового запроса с использованием метасимволов (символов-джокеров).

Шаблоны в командных оболочках

Чаще всего употребляются два символа — для замены любой строки символов звёздочка (*) и для замены любого одиночного символа знак вопроса (?).

При этом * может означать и пустую строку (отсутствие символов). Так например, одиноко стоящая звезда — это шаблон, к которому подходят все файлы каталогов, в которых осуществляется поиск по данному шаблону. Использование шаблона *.html позволит выделить все html-файлы, а шаблона my*.odt — файлы начинающиеся с «my» и оканчивающиеся на «.odt». Шаблон *2010* определяет все файлы, в именах которых присутствует группа символов 2010.

Знаком вопроса (?) в шаблоне обозначают любой одиночный символ. Например, под шаблон otchet.??? подойдут файлы имеющие любое расширение из трех букв, но начинающиеся именно так, как задано в шаблоне. Вариант записи descrip?ion.pdf найдет файлы с заданными именем, но вместо знака вопроса может быть любой символ (например, s или t). Очевидно, что задание шаблонов с помощью знака вопроса используется реже, чем использование звездочки.

Предусмотрены и более сложные правила записи шаблонов. Так, использование квадратных скобок ([ ]) со списком возможных значений позволяет осуществлять более гибкий поиск файлов. Пусть требуется найти все файлы, имена которых начинаются с буквы m, при этом требуется не учитывать регистр. Тогда шаблон будет выглядеть так: [mM]*. Если требуется одновременно найти файлы, начинающиеся на буквы, идущие подряд в алфавите, то можно задать диапазон. Например, под шаблон [m-pM-P]???.png подойдут все файлы с расширением png, имена которых состоят из четырех букв, причем первая буква m или n или o или p без учёта регистра.

Примеры команд на языке POSIX (Bourne) shell:

cat * >concat	# Конкатенирует все файлы в текущем каталоге в один
 rm *.???	# Удаляет все файлы в текущем каталоге, имеющие суффикс из трех символов

Шаблоны в СУБД

В программах управления базами данных, например SQL, вместо * используется знак процента %, вместо ? знак подчёркивания _. В Microsoft Access, точнее, в их скриптовых языках, символы-джокеры могут быть использованы в выражениях «LIKE».

Пример шаблонов

Шаблон Соответствие
boo?.tmp book.tmp, boot.tmp, boo1.tmp и др.
boo[tk].tmp boot.tmp и book.tmp
b*t.t?p boot.tep, bat.tmp, bt.tnp и др.
[a-c]3.bat a3.bat, b3.bat и c3.bat

Регулярные выражения

В регулярных выражениях концепция символов-джокеров получила дальнейшее развитие. В них есть специальные обозначения не только для одного («.») и любого количества (квантификатор «*») символов, но и различных классов символов (например, пустые символы «\s»), альтернативных выражений ("|") и многое другое.

Назначение шаблонов

Иногда при работе с файлами необходимо или возможно указывать только часть их имени или расширения. Это делается, например, для того, чтобы в параметрах программы не называть полностью имена всех файлов, над которыми производится операция, а выделить их в группу по какому-нибудь признаку (заметим, что некоторые программы работают не с единичными файлами, а с группой). Также бывает необходимо найти файл или файлы, у которых неизвестны полное имя и/или расширения. Для этих целей используют так называемые шаблоны.

Командные оболочки Linux (shell, bash и др.), а также различные языки программирования позволяют выделять (искать) из множества имен файлов и каталогов определенные группы посредством использования так называемых шаблонов имен файлов. С шаблоном командная оболочка сравнивает очередной файл, и если он «вписался» в этот шаблон, то будет учтен, если нет — то будет пропущен. Грубо, шаблон можно сравнить с некой коробкой, в которую влезет не каждый предмет и не только из-за размеров, но и из-за несовпадения изгибов коробки и предмета.

В оболочке bash шаблоны используются совместно со многими командами. Например, ls (просмотр каталогов), cp (копирование файлов), find (поиск файлов) и др. Однако командам передается не шаблон, а уже подошедший под него файл (группа файлов). Определением подходящих под шаблон объектов занимается сама командная оболочка.

См. также

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.