Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lex.docx
Скачиваний:
12
Добавлен:
20.03.2016
Размер:
133.64 Кб
Скачать

2. Регулярные выражения в Lex-правилах

Регулярные выражения определяют лексему. Регулярное

выражение может содержать символы латинского и русского

алфавитов в верхнем и нижнем регистрах, другие символы

(цифры, знаки препинания и т.д.) и символы-операторы.

Операторы позволяют осуществлять различные действия над

выделенной цепочкой символов. Операторы также обозначаются

символами.

2.1. Обозначения символов в выражениях

В выражении можно использовать любой символ. Символ

можно указывать в двойных кавычках. В этом случае это всегда

просто символ - его специальное значение отменяется. Напри-

мер:

"abc"

abc

эти последовательности символов идентичны.

. точка означает любой символ, кроме символа новой строки

"\n";

\восьмеричный_код_символа

указание символа его восьмеричным кодом (как в Си);

\n символ новой строки;

\t символ табуляции;

\b возврат курсора на один шаг назад;

8

пробел

любой символ пробела в выражении, если он не находится

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

ные кавычки. Это необходимо, так как пробел и табуляция

используются lex в качестве разделителя между определе-

нием и действием в правиле.

2.2. Операторы регулярных выражений

Операторы обозначаются символами-операторами, к ним

относятся:

\ ^ ? * + | $ / %

[] {} () <&lt;>&gt;

Каждый из этих символов или пар скобок в регулярном выраже-

нии играет роль оператора. Если необходимо отменить специ-

альное значение символа, обозначающего оператор, перед ним

нужно поставить символ \ или указать его в двойных кавычках.

Например:

abc+ - символ "+" - оператор;

abc\+ - символ "+";

abc"+" - символ "+".

2.3. Оператор выделения классов символов

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

заключены.

[abc]

означает либо символ "a", либо "b", либо символ "c";

Знак - используется для указания любого символа из лек-

сикографически упорядоченной последовательности:

[A-z]

означает любой латинский символ;

[А-Я]

любая прописная русская буква;

[+-0-9]

все цифры и знаки "+" и "-".

2.4. Повторители

Когда необходимо указать повторяемость вхождения сим-

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

повторители * и +.

9

Оператор * означает любое (в том числе и 0) число вхож-

дений символа или класса символов. Например:

x* любое число вхождений символа "x";

abc* любое число вхождений цепочки "abc";

[A-z]*

любое число вхождений любой латинской буквы;

[A--Яa--я_0-9]*

любое вхождение русских и латинских букв, знака подчер-

кивания и цифр.

Оператор + означает одно и более вхождений. Например:

x+ одно или более вхождений "x";

[0-9]+

одно или более вхождений цифр;

abc+ одно или более вхождений цепочки abc;

[A-z]+

одно или более вхождений любой латинской буквы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]