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

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

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

Объединяя квадратные скобки в одну последовательность, можно задать шаблон искомого слова. Так, выражение "[Yy][Ee][Ss]" соответствует словам yes, Yes, YES, yEs и так далее. Выражение "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" определяет шаблон для поиска любого номера карточки социального страхования (для США).

Обратный слэш -- \ -- служит для экранирования специальных символов, это означает,

что экранированные символы должны интерпретироваться буквально, т.е. как простые символы.

Комбинация "\$" указывает на то, что символ "$" трактуется как обычный символ, а не как признак конца строки в регулярных выражениях. Аналогично, комбинация "\\" соответствует простому символу "\".

Экранированные "угловые скобки" -- \<...\> -- отмечают границы слова.

Угловые скобки должны экранироваться, иначе они будут интерпретироваться как простые символы.

Выражение "\<the\>" соответствует слову "the", и не соответствует словам "them", "there", "other" и т.п.

bash$ cat textfile

This is line 1, of which there is only one instance.

This is the only instance of line 2.

This is line 3, another line.

This is line 4.

bash$ grep 'the' textfile

This is line 1, of which there is only one instance.

This is the only instance of line 2.

This is line 3, another line.

bash$ grep '\<the\>' textfile

This is the only instance of line 2.

Дополнительные метасимволы. Использующиеся при работе с egrep, awk и Perl

Знак вопроса -- ?
– - означает, что предыдущий символ или регулярное выражение встречается 0 или 1 раз. В основном используется для поиска одиночных символов.

Знак "плюс" -- + -- указывает на то, что предыдущий символ или выражение встречается 1 или более раз. Играет ту же роль, что и символ "звездочка" (*), за исключением случая нулевого количества вхождений.

# GNU версии sed и awk допускают использование "+",

# но его необходимо экранировать.

echo a111b | sed -ne '/a1\+b/p'

echo a111b | grep 'a1\+b'

echo a111b | gawk '/a1+b/'

# Все три варианта эквивалентны.

# Спасибо S.C.

Экранированные "фигурные скобки" -- \{ \} -- задают число вхождений предыдущего выражения.

Экранирование фигурных скобок -- обязательное условие, иначе они будут интерпретироваться как простые символы. Такой порядок использования, технически, не является частью основного набора правил построения регулярных выражений.

Выражение "[0-9]\{5\}" -- в точности соответствует подстроке из пяти десятичных цифр (символов из диапазона от 0 до 9, включительно).

В "классической" (не совместимой с POSIX) версии awk, фигурные скобки не могут быть использованы. Однако, в gawk предусмотрен ключ --re-interval, который позволяет использовать (неэкранированные) фигурные скобки.

bash$ echo 2222 | gawk --re-interval '/2{3}/'

2222

Язык программирования Perl и некоторые версии egrep не требуют экранирования фигурных скобок.

Круглые скобки -- – - предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "|" и при извлечении подстроки с помощью команды expr.

Вертикальная черта -- |– - выполняет роль логического оператора "ИЛИ" в регулярных выражениях и служит для задания набора альтернатив.

bash$ egrep 're(a|e)d' misc.txt

People who read seem to be better informed than those who do not.

The clarinet produces sound by the vibration of its reed.

Некоторые версии sed, ed и ex поддерживают экранированные версии регулярных выражений, описанных выше.

Классы символов POSIX. [:class:]

Это альтернативный способ указания диапазона символов.

Класс [:alnum:]– - соответствует алфавитным символам и цифрам. Эквивалентно выражению [A-Za-z0-9].

Класс [:alpha:]– - соответствует символам алфавита. Эквивалентно выражению [A-Za-z].

Класс [:blank:]– - соответствует символу пробела или символу табуляции.

Класс [:cntrl:]– - соответствует управляющим символам (control characters).

Класс [:digit:]– - соответствует набору десятичных цифр. Эквивалентно выражению [0-9].

Класс [:graph:] (печатаемые и псевдографические символы) -- соответствует набору символов из диапазона ASCII 33 - 126. Это то же самое, что и класс [:print:], за исключением символа пробела.

Класс [:lower:]– - соответствует набору алфавитных символов в нижнем регистре. Эквивалентно выражению [a-z].

Класс [:print:] (печатаемые символы) -- соответствует набору символов из диапазона ASCII 32 - 126. По своему составу этот класс идентичен классу [:graph:], описанному выше, за исключением того, что в этом классе дополнительно присутствует символ пробела.

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

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Столичный доктор. Том III

Вязовский Алексей
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III

Король Руси

Ланцов Михаил Алексеевич
2. Иван Московский
Фантастика:
альтернативная история
6.25
рейтинг книги
Король Руси

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Эйгор. В потёмках

Кронос Александр
1. Эйгор
Фантастика:
боевая фантастика
7.00
рейтинг книги
Эйгор. В потёмках

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
По осколкам твоего сердца