'sdt' или 'set', но не 'sxt', 'syt' или 'szt'
's[^x0-9]t' s, за которым следует любой символ, кроме x или символа в диапазоне 0-9, за которым следует t, т.е. 'slt' или 'smt', но не 'sxt', 's0t' или 's4t'
'^x” x в начале строки, т.е. 'xzy' или 'xzzy', но не 'yzy' или 'уху'
'x$' х в конце строки, т.е. 'yzx' или 'yx', но не 'yxz' или 'zxy'

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

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

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

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

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

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

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

Символ-шаблон Поддерживается Соответствующая строка
во всех Начало escape-последовательности. Определяет, следует ли интерпретировать последующий знак как шаблон. Последующие буквы или цифры интерпретируются различными способами в зависимости от программы
. во всех Любой символ
^ во всех Начало строки
$ во всех Конец строки
[...] во всех Любой из символов, указанных в скобках
[^...] во всех Любые символы, кроме указанных в скобках
* во всех Любое количество экземпляров предыдущего элемента
? egrep/Emacs, Perl/Python Ни одного или один экземпляр предыдущего элемента
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату