RFC 正则表达式运算符

RFC regular expression operators

我最近阅读了一份 RFC 文档,我注意到使用的正则表达式运算符与众所周知的不匹配。例如:

date-time = [ day-of-week "," ] date time [CFWS]
year = (FWS 4*DIGIT FWS) / obs-year

方括号表示只匹配里面几个字符中的一个。但在 RFC 中,我看到他们将其解释为 "optionally"。与星号相同,表示前面的标记将出现零次或更多次。在示例中,我们有

4*DIGIT

不难猜到这意味着出现了 4 次 DIGIT 令牌。

我应该如何解释 RFC 文档正则表达式运算符,是否有任何文档描述它们的名称?

您正在查看的文档(我相信)RFC 2822 是这样说的:

1.2.2. Syntactic notation

This standard uses the Augmented Backus-Naur Form (ABNF) notation specified in [RFC2234] for the formal definitions of the syntax of messages.

所以,是的,语法是在 RFC 2234 中定义的,而不是正则表达式。

一些特定于您引用的块的部分:

3.5 Sequence Group

Elements enclosed in parentheses are treated as a single element, whose contents are STRICTLY ORDERED.

3.6 Variable Repetition

The operator "*" preceding an element indicates repetition. The full form is:

   <a>*<b>element

where <a> and <b> are optional decimal values, indicating at least <a> and at most <b> occurrences of element.

3.8 Optional Sequence

Square brackets enclose an optional element sequence: