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 | 退格。 |
| \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} | - | 在当前正则表达式中包含正则表达式 MACRO。 |
| 序列 | 描述 |
|---|---|
| ^ | 字符串开头或换行符之后。 |
| $ | 字符串结尾或换行符之前。 |
| 序列 | 描述 |
|---|---|
| (...) | 对正则表达式进行分组以覆盖默认运算符优先级。 |
| (?r-s:pattern) |
应用选项 r 并省略选项 s 时解释模式。选项可以是字符 i、s 或 x 中的零个或多个。 i 表示不区分大小写。 -i 表示区分大小写。 s 更改 . 的含义,使其匹配任何字符。 -s 更改 . 的含义,使其匹配除 \n 之外的任何字符。 x 忽略模式中的注释和空格。空格将被忽略,除非它被反斜杠转义、包含在 ""s 中或出现在字符范围内。 这些选项可以通过将位标志组合传递给词法分析器在规则级别全局应用。 |
| (?# comment ) | 省略 () 内的所有内容。遇到的第一个 ) 字符结束模式。注释中不能包含 ) 字符。注释可以跨越多行。 |