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:
我最近阅读了一份 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: