RFC正则表达式运算符

时间:2015-11-11 16:33:00

标签: regex rfc abnf

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

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

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

4*DIGIT

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

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

1 个答案:

答案 0 :(得分:2)

您正在查看的文件(我相信),RFC 2822,说明了这一点:

  

1.2.2。句法符号

     

本标准使用Augmented Backus-Naur形式(ABNF)表示法      在[RFC2234]中指定的语法的正式定义      消息。

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

针对您引用的块的几个部分:

  

3.5序列组

     

括在括号中的元素被视为单个元素,      其内容严格要求。

  

3.6变量重复

     

运营商" *"元素前面表示重复。满满的      形式是:

   <a>*<b>element
     

其中&lt; a&gt;和&lt; b&gt;是可选的十进制值,至少表示      &LT a取代;并且至多&lt; b&gt;元素的出现。

  

3.8可选序列

     

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