Модуль Parle поддерживает сопоставление регулярных выражений аналогично flex.
Также поддерживаются следующие наборы символов интерфейса POSIX:
[:alnum:]
, [:alpha:]
, [:blank:]
, [:cntrl:]
, [:digit:]
, [:graph:]
, [:lower:]
, [:print:]
, [:punct:]
, [:space:]
, [:upper:]
, [:xdigit:]
.
Классы символов Unicode не включены по умолчанию, передайте параметр --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 раз. |
*? | нет | Match 0 or more times. |
+? | нет | Match 1 or more times. |
?? | нет | Совпадение 0 или 1 раз. |
{n,}? | нет | Совпадение не менее n раз. |
{n,m}? | нет | Совпадение не менее n раз, но не более m раз. |
{MACRO} | - | Включить макрос регулярного выражения в текущее регулярное выражение. |
Последовательность | Описание |
---|---|
^ | Начало строки или после новой строки. |
$ | Конец строки или перед новой строкой. |
Последовательность | Описание |
---|---|
(...) | Сгруппировать регулярное выражение, чтобы переопределить приоритет операторов по умолчанию. |
(?r-s:pattern) |
Применить опцию r и опустите опцию s при интерпретации шаблона.
Параметрам разрешается быть нулём или более символов i, s или x.
i — без учёта регистра.
-i — с учётом регистра.
s — изменяет значение . , чтобы соответствовать любому символу.
-s — изменяет значение . ,
чтобы соответствовать любому символу кроме \n .
x — игнорирует комментарии и пробелы в шаблонах.
Пробелы игнорируются, если они не экранированы обратной косой чертой,
не содержатся в "" или не появляются внутри диапазона символов.
Эти параметры разрешается применять глобально на уровне правил за счёт передачи в лексер комбинации битовых флагов.
|
(?# comment ) | Пропускает всё внутри (). Первый встретившийся символ ) завершает шаблон. Комментарий не может содержать символ ). Комментарий может занимать несколько строки. |