1

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

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

方括号意味着它将只匹配其中几个字符中的一个。但在 RFC 中,我看到他们将其解释为“可选”。与 asterix 相同,表示前面的标记将出现零次或多次。在我们的例子中

4*DIGIT

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

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

4

1 回答 1

2

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

1.2.2。句法符号

该标准使用 [RFC2234] 中指定的增强巴科斯-瑙尔格式 (ABNF) 符号作为消息语法的正式定义。

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

特定于您引用的块的几个部分:

3.5 序列组

括号中的元素被视为单个元素,其内容是严格排序的。

3.6 可变重复

元素前面的运算符“*”表示重复。完整的表格是:

   <a>*<b>element

其中 <a> 和 <b> 是可选的十进制值,表示至少出现 <a> 和最多 <b> 个元素。

3.8 可选序列

方括号包含一个可选的元素序列:

于 2015-11-11T16:39:50.117 回答