Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

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

[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]

  • Читать дальше
  • 1
  • ...
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win