# Сопоставление с шаблоном Parle

Модуль Parle поддерживает сопоставление регулярных выражений аналогично генератору flex. Поддерживаются также следующие наборы символов интерфейса POSIX: `[:alnum:]`, `[:alpha:]`, `[:blank:]`, `[:cntrl:]`, `[:digit:]`, `[:graph:]`, `[:lower:]`, `[:print:]`, `[:punct:]`, `[:space:]`, `[:upper:]`, `[:xdigit:]`.

Классы символов Юникода не включены по умолчанию, передайте параметр --enable-parle-utf32, чтобы сделать классы символов доступными. Конкретная кодировка сопоставляется через правильно построенное регулярное выражение. Например, соответствие символу евро в кодировке UTF-8 задают регулярным выражением `[\xe2][\x82][\xac]`. Шаблон для строки в кодировке UTF-8 бывает таким: `[ -\x7f]{+}[\x80-\xbf]{+}[\xc2-\xdf]{+}[\xe0-\xef]{+}[\xf0-\xff]+`.

## Представления символов

Представления символов
Последовательность | Описание
--- | ---
\a | Символ оповещения, сигнал.
\b | Символ возврата "Backspace".
\e | Символ ESC, \x1b.
\n | Новая строка.
\r | Возврат каретки.
\f | Разрыв страницы, \x0c.
\t | Горизонтальная табуляция, \x09.
\v | Вертикальная табуляция, \x0b.
\oct | Символ, заданный трёхзначным восьмеричным кодом.
\xhex | Символ, заданный шестнадцатеричным кодом.
\cchar | Именованный управляющий символ.

## Классы символов

Классы символов
Последовательность | Описание
--- | ---
[...] | Отдельный символ, который указали в символьном классе в виде списка или диапазона. Диапазоны комбинируют с операторами `{+}` и `{-}`. Например, `[a-z]{+}[0-9]` то же, что и `[0-9a-z]`, а `[a-z]{-}[aeiou]` то же, что и `[b-df-hj-np-tv-z]`.
[^...] | Отдельный символ, который не содержится в списке или диапазоне символьного класса.
. | Отдельный произвольный символ, по умолчанию `[^\n].`
\d | Отдельная произвольная десятичная цифра, `[0-9]`.
\D | Отдельный произвольный символ, кроме десятичной цифры, `[^0-9]`.
\s | Отдельный произвольный пробельный символ, `[ \t\n\r\f\v]`.
\S | Отдельный произвольный непробельный символ, `[^ \t\n\r\f\v]`.
\w | Отдельный произвольный символ, который образует «слово», `[a-zA-Z0-9_]`.
\W | Отдельный произвольный символ, который не образует «слово», `[^a-zA-Z0-9_]`.

## Классы символов Юникода

Классы символов кодировки Unicode
Последовательность | Описание
--- | ---
\p{C} | Прочие.
\p{Cc} | Прочие, контрольные.
\p{Cf} | Прочие, форматирование.
\p{Co} | Прочие, для приватного использования.
\p{Cs} | Прочие, суррогаты.
\p{L} | Буквы.
\p{LC} | Буквы, регистр.
\p{Ll} | Буквы, в нижнем регистре.
\p{Lm} | Буквы, модификаторы.
\p{Lo} | Буквы, прочее.
\p{Lt} | Буквы, заглавные буквы.
\p{Lu} | Буквы, в верхнем регистре.
\p{M} | Отметки.
\p{Mc} | Отметки, двоеточия.
\p{Me} | Отметки, вложения.
\p{Mn} | Отметки, апострофы.
\p{N} | Числа.
\p{Nd} | Числа, десятичная цифра.
\p{Nl} | Числа, цифры обозначаемые буквами (римские).
\p{No} | Числа, прочие.
\p{P} | Знаки пунктуации.
\p{Pc} | Знаки пунктуации, соединители.
\p{Pd} | Знаки пунктуации, тире.
\p{Pe} | Знаки пунктуации, закрывающие скобки.
\p{Pf} | Знаки пунктуации, закрывающие кавычки.
\p{Pi} | Знаки пунктуации, открывающие кавычки.
\p{Po} | Знаки пунктуации, прочее.
\p{Ps} | Знаки пунктуации, открывающие скобки.
\p{S} | Символы.
\p{Sc} | Символы, валюты.
\p{Sk} | Символы, модификаторы.
\p{Sm} | Символы, математические.
\p{So} | Символы, прочие.
\p{Z} | Разделители.
\p{Zl} | Разделители, линия.
\p{Zp} | Разделители, параграф.
\p{Zs} | Разделители, пробел.

Эти классы символов доступны, только если во время компиляции передали опцию --enable-parle-utf32.

## Чередование и повторение

Чередование и повторение
Последовательность | Жадный квантификатор | Описание
--- | --- | ---
...|... | - | Попробуйте чередовать подшаблоны.
* | да | Совпадение 0 или более раз.
+ | да | Совпадение 1 или более раз.
? | да | Совпадение 0 или 1 раз.
{n} | нет | Совпадение ровно n раз.
{n,} | да | Совпадение не меньше n раз.
{n,m} | да | Совпадение не меньше n раз, но не более m раз.
*? | нет | Совпадение 0 или больше раз.
+? | нет | Совпадение 1 или больше раз.
?? | нет | Совпадение 0 или 1 раз.
{n,}? | нет | Совпадение не меньше n раз.
{n,m}? | нет | Совпадение не меньше n раз, но не более m раз.
{MACRO} | - | Включить макрос регулярного выражения в текущее регулярное выражение.

## Якоря

Якоря
Последовательность | Описание
--- | ---
^ | Начало строки или после новой строки.
$ | Конец строки или перед новой строкой.

## Группировка

Группировка
Последовательность | Описание
--- | ---
(...) | Сгруппировать регулярное выражение, чтобы переопределить приоритет операторов по умолчанию.
(?r-s:pattern) | Применить опцию r и опустите опцию s при интерпретации шаблона. Параметрам разрешается быть нулём или более символов i, s или x. `i` — без учёта регистра. `-i` — с учётом регистра. `s` — изменяет значение `.`, чтобы соответствовать любому символу. `-s` — изменяет значение `.`, чтобы соответствовать любому символу кроме `\n`. `x` — игнорирует комментарии и пробелы в шаблонах. Пробелы игнорируются, если их не заэкранировали обратной косой чертой, не содержатся в "" или не появляются внутри диапазона символов. Эти параметры разрешается применять глобально на уровне правил за счёт передачи в лексер комбинации битовых флагов.
(?# comment ) | Пропускает всё внутри (). Первый встретившийся символ ) завершает шаблон. В комментарии нельзя указывать символ ). Комментарий может занимать несколько строки.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open