Модуль 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_]. |
| Последовательность | Описание |
|---|---|
| \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 ) | Пропускает всё внутри (). Первый встретившийся символ ) завершает шаблон. В комментарии нельзя указывать символ ). Комментарий может занимать несколько строки. |