Выбрать главу

[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\.

Запятая в квадратных скобках поставлена для того, чтобы сделать шаблон удобным для зрительного восприятия.

Метасимвол '*', размещенный после квадратных скобок, указывает на то, что символы в скобках могут повторяться неопределенное число раз. Например, следующий шаблон соответствует любому слову:

[A‑Za~z]*

Метасимвол '^' после открывающей квадратной скобки — это признак того, что шаблон соответствует любым символам, кроме указанных в скобках. Так, шаблон

[^a‑zA‑Z]

соответствует всем символам, кроме букв, а шаблон отвечает всем символам, которые не являются числами.

7.7. Поиск символов, встречающихся заданное число раз

Метасимвол '*' позволяет находить символы, встречающиеся несколько раз подряд, но число повторений при этом не определяется. Если же необходимо в процессе поиска учитывать точное количество последовательных вхождений символа в строку, следует применить шаблон \{ \}. Существует четыре варианта этого шаблона:

шаблон\{n\} Соответствует шаблону, встречающемуся ровно n раз подряд
шаблон\(n,\} Соответствует шаблону, встречающемуся не менее n раз подряд
шаблон\{,m\} Соответствует шаблону, встречающемуся не более m раз подряд
шаблон\{n, m\} Соответствует шаблону, встречающемуся не менее n и не более m раз подряд, где n и m — целые числа из интервала от 0 до 255

Представленный ниже шаблон соответствует последовательности из двух букв 'А', за которыми следует буква 'В':

А\{2\}В

В результате получим "ААВ".

В следующем шаблоне задано, что буква 'А' встречается не менее четырех раз подряд:

А\{4,\)В

Возможные результаты поиска — "ААААВ" или "АААААААВ", но не "АААВ". Поиск последовательности, в которой буква 'А' встречается от двух до четырех раз, выполняется по такому шаблону:

А\{2,4\}В

Будут найдены строки "ААВ", "АААВ", "ААААВ", но не "АВ" или "АААААВ". Вернемся к уже рассматривавшемуся примеру фильтрации текстового файла, фрагмент которого представлен ниже:

1234ХС9088 4523XX90D1 0011ХА9912 9931ХС3445

Допустим, требуется найти строки, в которых первые четыре символа — цифры, за ними идут символы "XX", а затем — еще четыре цифры. Решить данную задачу позволит такой шаблон:

[0-9]\{4\}ХХ[0-9]\(4\}

Применив этот шаблон к приведенному выше фрагменту, получим:

1234ХС9088 - не соответствует

4523XX900i - соответствует

0Q11XA9912 - не соответствует

9931ХС3445 - не соответствует

7.8. Примеры

В табл. 7.2 приведен ряд дополнительных примеров использования регулярных выражений.

Таблица 7.2. Полезные регулярные выражения

^the Соответствует строкам, которые начинаются символами "the"
[Ss]igna[lL] Соответствует словам "signal", "signaL", "Signal" и "SignaL"
[Ss]igna[lL]\. То же, что и в предыдущем случае, но слово, к тому же, должно завершаться точкой
tty$ Соответствует строкам, которые завершаются символами "tty"
^USER$ Соответствует слову "USER", которое является единственным в строке
\. Соответствует точке
^d..x..x..x Соответствует каталогам с установленным правом на выполнение для владельца, группы и других пользователей
^[^l] Исключает из списка файлов записи, соответствующие символическим ссыпкам
00* Находит строки, содержащие два или больше нулей подряд
[lL] Соответствует прописной и строчной букве 'l'
[iInN] Соответствует прописным и строчным буквам 'i' и 'n'
^S Соответствует пустой строке
^.*$ Соответствует строке, состоящей из любого числа символов
^……$ Соответствует строке, состоящей из шести символов
[a‑zA‑Z] Соответствует любой прописной или строчной букве
[a‑z][a‑z]* Соответствует по крайней мере одной строчной букве
[^0-9\$] При рассмотрении цифры и знаки доллара не учитываются
[^0-9A‑Za‑z] При рассмотрении не учитываются буквы и цифры
[123] Соответствует цифрам 1, 2 и 3
[Dd]evice Соответствует словам "Device" и "device"
De..ce Соответствует слову, в котором первые два символа — "De", за ними идут любые два символа, а затем -cимволы "се"
\^q Соответствует символам "^q"
^.$ Соответствует строке, содержащей только один символ
^\.[0-9][0-9] Соответствует строке, которая начинается с точки и двух цифр
"Device" Соответствует слову "Device"
De[Vv]ice\. Соответствует слову "DeVice" или "Device", после которого стоит точка
[0-9]\{2\}-[0-9]\ {2\}-[0-9]\{4\} Соответствует шаблону даты в формате dd‑mm‑yyyy
[0-9]\{3\}\.[0-9]\{3\}\ .[0-9]\{3\}\.[0-9]\{3\} Соответствует шаблону IP–адреса в формате ппп. ппп. ппп. ппп