Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_ПСРВ.doc
Скачиваний:
26
Добавлен:
12.02.2016
Размер:
1.6 Mб
Скачать

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

Регулярные выражения представляют собой язык описания текстовых шаблонов. Шаблон представляет собой РВ, заключенное в символы "/.../". Регулярные выражения содержат образцы символов, входящих в искомое текстовое выражение, и конструкции, определяемые специальными символами (метасимволами).

Например:

/Olga/ - Указывает на строки, содержащие Olga.

/[Oo]lga|[Mm]ike|[Mm]al/ - Указывает на строки, содержащие Olga или olga или Mike или mike или Mal или mal.

/number[0-9]/ - Указывает на строки, содержащие number0 или number1 или ... number9.

Метасимволы, используемые в регулярных выражениях

^

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

$

конец строки

[]

любой символ, заключенный в квадратные скобки; чтобы задать диапазон символов, в квадратных скобках указываются через дефис первый и последний символы диапазона

[^]

любой символ, кроме символов, заданных в квадратных скобках

.

любой отдельный символ

\

отменяет специальное значение следующего за ним метасимвола

*

указывает, что предыдущий шаблон встречается 0 или более раз

\{n\}

указывает, что предыдущий шаблон встречается ровно n раз

\{n,\}

указывает, что предыдущий шаблон встречается не менее n раз

\{,n\}

указывает, что предыдущий шаблон встречается не более n раз

\{n,m\}

указывает, что предыдущий шаблон встречается не менее n и не более m раз

Примеры регулярных выражений

^the

ищутся строки, начинающиеся с буквосочетания "the"

be$

ищутся строки, заканчивающиеся буквосочетанием "be"

[Ss]igna[lL]

ищутся строки, содержащие буквосочетания: "signal", "Signal", "signaL" или "SignaL"

\.

ищутся строки, содержащие точку

^...th

ищутся строки, содержащие символы "th" в 4-й и 5-й позициях

^.*\{53\}th

ищутся строки, содержащие символы "th" в 54-й и 55-й позициях

^.*\{10,30\}th

ищутся строки, содержащие символы "th" в любых позициях между 11-й и 31-й

^.....$

ищутся строки, состоящие из 5 любых символов

^t.*e$

ищутся строки, начинающиеся с буквы "t" и заканчивающиеся буквой "e"

[0-9][a-z]

ищутся строки, содержащие комбинацию: цифра-прописная буква

[^123]

ищутся строки, не содержащие цифр "1" или "2" или "3"

В языке awk синтаксис базовых РВ расширен следующими дополнениями:

  • "()" - скобки для группирования РВ;

  • "|" - логическое "или";

  • "+" - плюс, стоящий за РВ, означает любую последовательность вхождений этого РВ, начиная с первого;

  • "?" - знак вопроса, стоящий за РВ, означает 0 или 1 вхождений этого РВ.

В шаблоне также допускаются выражения отношения, которые могут быть двух типов:

  • < Выражение> < Принадлежность> < Выражение>

  • < Выражение> < Лог. Операция> < Выражение>

Принадлежность:

~ - Содержится;

!~ - Не содержится.

Лог. Операция: < , < =, ==, !=, > =, > - в их обычном смысле. В левой части таких выражений в обоих случаях обычно применяется имя поля строки, в правой, в первом случае - шаблон, во втором - любое выражение.

Например:

$1 ~ /[Oo]lga/ - Указывает на строки, первое поле которых содержит Olga или olga.

$1 > = "s" - Указывает на строки, начинающиеся с символа s или следующих за ним по порядку: t, u, v...

Допускается логическая комбинация образцов (шаблонов) с использованием следующих знаков: || - ``или'', & & - ``и'', ! - ``не''.

Последовательности образцов, соединенных одним из знаков читаются слева направо.

Комбинация вида: шаблон1, шаблон2

означает применение задаваемых с данными шаблонами действий к строке, удовлетворяющей шаблону1, и далее - ко всем следующим за ней строкам, вплоть до появления строки, удовлетворяющей шаблону2, включительно.

В языке awk предусмотрены два специальных шаблона - BEGIN и END. Первый описывает действия, выполняемые перед началом чтения файла, второй - действия, выполняемые после окончания чтения.