RegexRule - activesys/alpaca-llama GitHub Wiki

alpaca正则表达式规范

alpaca并不打算识别所有的正则表达式的形式,它仅仅识别能够描述词法的最小的正则表达式集合,这个集合有可能在未来进行扩展。

字符集和编码

alpaca采用ASCII字符编码表的基础表(0~127), 字符集是ASCII字符表中除了控制字符以外的所有可显式符号。

元字符

元字符在正则表达式中起到运算符号作用的字符,这些字符包括:

| * + ( ) \ . ^ [ ] -

当表达式中想描述这些字符本身的时候可以使用转移符号例如\表示本身,-和^只在[]内有效,^只有在[后面才有效,-^在[]外无效。|*+().在[]中无效。[]中包含的范围的形式如a-b,其中a<b,并且助记符不能够出现在a或b中。

基本运算

与: abc

或: a|b|c或者[abc]

非: [^a]

闭包: a*或者b+

分组: (ab)|(cd)

缩略表示: \a \b \f \n \r \t \v \c

助记符: \d=[0-9] \D=[^\d] \w=[a-zA-Z0-9_] \W=[^\w] \s=[ \f\n\r\t\v] \S=[^\s] \l=[a-z] \C=[A-Z]

\c表示空格

词法描述

operator ::= \| | \* | \+ | \ ( | \ ) | \\ | \. | \^ | \ [ | \ ] | \-

number ::= [0-9]

letter ::= [a-zA-Z]

char ::= ! | " | # | $ | % | & | ' | , | / | : | ; | < | = | > | ? | @ | _ | ` | { | } | ~

escape ::= \\$operator$

abbreviation ::= \\a | \\b | \\f | \\n | \\r | \\t | \\v | \\c

mnemonic ::= \\d | \\D | \\w | \\W | \\s | \\S | \\l | \\C

operand ::= $number$ | $letter$ | $char$ | $escape$ | $abbreviation$ | $mnemonic$

语法描述

REGEX ::= UNION | SIMPLE

UNION ::= REGEX '|' SIMPLE

SIMPLE ::= CONCATENATION | BASIC

CONCATENATION ::= SIMPLE BASIC

BASIC ::= KLEENE_CLOSURE | POSITIVE_CLOSURE | ELEMENTARY

KLEENE_CLOSURE ::= ELEMENTARY '*'

POSITIVE_CLOSURE ::= ELEMENTARY '+'

ELEMENTARY ::= GROUP | '.' | operand | SET

GROUP ::= '(' REGEX ')'

SET ::= POSITIVE_SET | NEGATIVE_SET

POSITIVE_SET ::= '[' ITEMS ']'

NEGATIVE_SET ::= '[' '^' ITEMS ']'

ITEMS ::= ITEM | ITEM ITEMS

ITEM ::= RANGE | operand

RANGE ::= operand '-' operand

⚠️ **GitHub.com Fallback** ⚠️