Шрифт:
– rw-rw-rw- - не соответствует
drwxrwxr-x -cоответствует.
– rwxr-xr-x — не соответствует
Вернемся к рассмотренному в предыдущем параграфе примеру фильтрации текстового файла. Шаблон ^001 соответствует строкам, начинающимся с символов "001". Результат его применения может быть таким:
1234ХС9088 — не соответствует
4523ХХ9001 — не соответствует
0011ХА9912 -cоответствует
993IXC3445 — не соответствует
Для поиска строк, у которых в четвертой позиции от начала стоит символ '1', можно воспользоваться следующим шаблоном:
^…1
В результате получим:
1234ХС9088 — не соответствует
4b23ХХ9001 — не соответствует
0011XA9912 -cоответствует
993ДХС3445 -cоответствует
Чтобы найти строки, начинающиеся с символов "comp", следует указать:
^comp
Давайте немного усложним этот шаблон. Предположим, после символов "comp" могут идти любые две буквы, но завершать последовательность должны символы "ing":
^comp..ing
Этот шаблон обеспечивает поиск таких слов, как "computing", "complaining" и т. д. Как показывает данный пример, в регулярном выражении можно сочетать различные шаблоны поиска.
7.3. Поиск выражений в конце строки с помощью метасимвола '$'
Метасимвол "$' предназначен для поиска слов или символов, находящихся в конце строки. Он указывается в конце шаблона. Предположим, требуется найти строки, заканчивающиеся словом "trouble". Эту задачу позволяет решить такой шаблон:
trouble$
Следующий шаблон соответствует пустой строке, не содержащей символов:
А с помощью показанного ниже шаблона можно найти строки, включающие только один символ:
7.4. Поиск символов, встречающихся неопределенное число раз, с помощью метасимвола '*'
Метасимвол '*' означает, что предыдущий символ в регулярном выражении либо отсутствует, либо встречается произвольное число раз подряд (1, 2 и т. д.). Например, шаблон
сотрu*t
отвечает таким словам:
computer
computing
compuuuuute
А шаблон
10133*
соответствует следующему:
101333
10133
10134
7.5. Поиск специальных символов с помощью метасимвола '\'
Ряд символов, попадая в состав регулярных выражений, приобретает специальное значение. В общем случае специальными являются следующие символы:
$ . ' " * [ ] ^ | \ + ? { }
Когда требуется найти строку, содержащую один из таких символов, его необходимо "защитить" в шаблоне с помощью обратной косой черты, которая отменяет специальное значение следующего за ней метасимвола. Предположим, строка содержит символ '.', который, как известно, в регулярном выражении соответствует произвольному символу. Вот шаблон для него:
\.
Если необходимо найти файлы, допустим, с расширением pas, можно применить следующий шаблон:
\*\.pas
7.6. Поиск символов, входящих в заданный набор или
диапазон
Шаблон [] соответствует списку или диапазону символов, указанных в квадратных скобках.
Символы в списке можно разделять запятыми. Это облегчает восприятие шаблона, хотя и не является обязательным требованием.
Для задания диапазона символов используется дефис (-). Слева от него указывается первый символ диапазона, а справа — последний. Предположим, необходимо найти символ, являющийся цифрой. Можно применить такой шаблон:
[0123456789]
Однако проще задать диапазон:
[0-9]
Следующий шаблон соответствует любой строчной букве:
[a-z]
Чтобы найти любую букву произвольного регистра, воспользуйтесь шаблоном
[A-Za-z]
Здесь формируется список из двух диапазонов: прописные буквы от 'А' до 'Z' и строчные буквы от 'а' до 'z'.
Представленный ниже шаблон соответствует любому алфавитно–цифровому символу:
[A-Za-z0-9]
Далее показан шаблон, предназначенный для поиска трехсимвольных комбинаций следующего типа: в начале находится буква 's', за ней может следовать любая прописная или строчная буква, а завершает последовательность буква 't':
s[a-zA-Z]t
Если же комбинация состоит только из букв нижнего регистра, воспользуйтесь таким шаблоном:
s[a-z]t
Чтобы найти слово "computer" независимо от того, расположено оно в начале предложения или нет, примените такой шаблон:
[Сс]omputer
Следующий шаблон соответствует слову "system", которое начинается с прописной или строчной буквы и за которым следует точка:
[S,s]ystem\.
Запятая в квадратных скобках поставлена для того, чтобы сделать шаблон удобным для зрительного восприятия.