Чтение онлайн

на главную - закладки

Жанры

Искусство программирования для Unix
Шрифт:

Существует большое количество второстепенных вариантов записи регулярных выражений.

1. Выражения-маски. Ограниченный набор соглашений по применению символов-шаблонов (wildcard), использовавшийся в ранних оболочках Unix для сопоставления имен файлов. Существует всего 3 символа-шаблона: * — соответствует любой последовательности символов (как . * в других вариантах); ? — соответствует любому единичному символу (как . в других вариантах); [. . . ] — соответствует классу символов как в других вариантах. В некоторых оболочках (csh, bash, zsh)

позднее был добавлен шаблон {} для выбора подстроки. Таким образом, выражение x{a,b}c соответствует строкам хас или xbc, но не хс. В некоторых оболочках выражения-маски получили дальнейшее развитие в направлении расширения регулярных выражений.

2. Базовые регулярные выражения. Форма записи, принятая в исходной утилите grep(1) для извлечения из файла строк, соответствующих заданному регулярному выражению. Выражения этого типа также применяются в строковом редакторе ed(1) и потоковом редакторе sed(1). Профессионалы старой школы Unix считают данное выражение основной, или "унифицированной", разновидностью регулярных выражений. Пользователи, впервые столкнувшиеся с более современными инструментами, склонны использовать расширенную форму, которая описана ниже.

3. Расширенные регулярные выражения. Запись, принятая в расширенной версии grep, egrep(1) для извлечения из файла строк, соответствующих заданному регулярному выражению. Регулярные выражения в Lex и редакторе Emacs весьма близки к egrep-разновидности.

Таблица 8.1. Примеры регулярных выражений

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

Соответствующая строка

"х.у"

x, за которым следует любой символ с последующим у

"х\.у"

х, за которым следует точка с последующим у

"xz?y"

х, за которым следует не более одного символа z с последующим у, т.е. "ху" или "xzy", но не "xz" или "xdy"

"xz*y"

х, за которым следует любое количество символов z, за которыми сле-дуету,т.е. "ху" или "xzy" или "xzzzy",HOне "xz" или "xdy"

"xz+y"

X за которым следует один или несколько экземпляров символа z, за которыми следует у, т.е. "xzy" или "xzzy",HOHe "ху", "xz" или "xdy"

"stxyz]t"

s, за которым следует любой из символов х, у или z, за которым следует t, т.е. "sxt", "syt" или "szt",HOHe "st" или "sat"

"a[x0-9]b"

а, за которым следует либо х, либо символ в диапазоне 0 - 9, за которым следует Ь, то есть, "axb", "аОЪ" или "а4Ь",ноне "ab" или "aab"

»s[

A

xyz] t"

s,

за которым следует любой символ, кроме х, у или z, за которым следует t, т.е. "sdt" или "set", но не "sxt", "syt" или "szt"

"S [

A

x0-9] t"

s, за которым следует любой символ, кроме х или символа в диапазоне 0 - 9, за которым следует t, т.е. "sit" или " smt", но не " sxt", " s 01" или "s4t"

х в начале строки, т.е. "xzy" или "хггу",ноне "yzy" или "уху"

"x$"

х в конце строки, т.е. "yzx" или "ух", но не "yxz" или " zxy"

4. Регулярные выражения языка Perl. Форма записи, принятая в regexp-функциях языков Perl и Python. Выражения этого типа являются более мощными по сравнению с egrep-вариантом.

После рассмотрения основных примеров в таблице 8.2 приведена сводка стандартных шаблонов для регулярных выражений. Следует отметить, что в таблицу не включен вариант выражений-масок, поэтому запись "для всех" означает только Зтипа: базовый, расширенный/Emacs и Perl/Python.

Стандарт POSIX для регулярных выражений вводит некоторые символьные диапазоны, такие как [[ilower;; ] ] и [ [ :digit: ] ]. Кроме того, отдельные специфические средства используют дополнительные символы-шаблоны, не описанные здесь. Однако для интерпретации большинства регулярных выражений приведенных примеров достаточно.

Таблица 8.2. Введение в операции с регулярными выражениями

Символ-шаблон

Поддерживается

Соответствующая строка

\

во всех

Начало евсаре-последовательности. Определяет, следует ли интерпретировать последующий знак как шаблон. Последующие буквы или цифры интерпретируются различными способами в зависимости от программы

во всех

Любой символ

во всех

Начало строки

$

во всех

Конец строки

[...]

во всех

Любой из символов, указанных в скобках

Г.. ]

во всех

Любые символы,

кроме указанных

в скобках

Поделиться:
Популярные книги

Курсант: назад в СССР

Дамиров Рафаэль
1. Курсант
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Курсант: назад в СССР

Чужая семья генерала драконов

Лунёва Мария
6. Генералы драконов
Фантастика:
фэнтези
5.00
рейтинг книги
Чужая семья генерала драконов

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

Имперский Курьер. Том 5

Бо Вова
5. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Имперский Курьер. Том 5

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Законы Рода. Том 11

Андрей Мельник
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 11

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Вираж бытия

Ланцов Михаил Алексеевич
1. Фрунзе
Фантастика:
героическая фантастика
попаданцы
альтернативная история
6.86
рейтинг книги
Вираж бытия

Отмороженный 11.0

Гарцевич Евгений Александрович
11. Отмороженный
Фантастика:
боевая фантастика
рпг
попаданцы
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 11.0

История "не"мощной графини

Зимина Юлия
1. Истории неунывающих попаданок
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
История немощной графини

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

Призыватель нулевого ранга

Дубов Дмитрий
1. Эпоха Гардара
Фантастика:
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга